何回計算したらどれ位時間がかかるのか把握しておくのも大事だと思います。
#include <stdio.h>
#include <math.h>
#include <time.h>
#define PI 3.1415926535897932
int main(){
int i;
double c;
clock_t t;
t = clock();//時間を格納
printf("計測中です\n");
for(i=0;i<20000000;i++){
c = cos( PI/1000*(i%1000) );
}
printf("%.3f秒\n",(clock()-t)/(double)CLOCKS_PER_SEC);
}
実行結果例
計測中です
1.046秒
2000万回cosの計算するのにどれ位時間がかかるか計測するプログラムです。
うちのパソコンだと1秒でした。
math.hの関数は時間がかかると言えども1秒間に2000万回も計算できるわけです。
逆に言えば、これが原因だとすると、簡単なゲームや2Dゲームなどで
1秒間に2000万回も計算しないといけないようなプログラムは
それはそれで問題があるように思います。
(多数のポリゴンの計算などになると必要かもしれませんが)
案外他に原因がある可能性が高いです。
例えばDXライブラリでいえばSetFontSizeや画面をキャプチャする関数などを多用すると重くなります。
フォントサイズを毎回指定するときは、この関数を呼ぶのではなく、
フォントハンドルを最初に作って描画しないといけません。
また、見えないところで画像を何枚も重ねて描画していたり、
アルファブレンドを大きな面積でおこなっていたりしていても遅くなります。
このように関数の使い方を間違ったり、非効率なプログラムを書いたりしていても処理は遅くなるので、
その辺も見直してみるといいと思います。
もしもcos,sin計算が原因で、そこまで厳密な計算が必要ないときは、
あらかじめ配列に計算結果を代入しておくと言う方法もあるようです。
計算結果を格納する配列要素を1000個位用意しておき、
2π/1000ずつ予め計算しておいて格納しておくという方法です。
あまり良い方法ではないかもしれませんが。
しかしビスタで512Mは少なすぎると思います。
無理にビスタを入れる必要は無いのではないでしょうか?
スペックが低いのに重いOSを入れると使い物にならなくなってしまう可能性ありますし。
もしウィルスソフトとかいれてしまうと、常にメモリオーバーしている状態になっていると思います。
PF使用量はいくらになっていますか?
メモリオーバーになっていると、極端に処理は遅くなります。