
-------------------------------------------------------------------------------------
void show_time()
{
#define CONST_NUM (sqrt(abs(sin(1024 / 3.46) * cos(log(1.2 / 0.45)))))
auto startTime0 = clock();
double z = 0;
for (int i = 0; i < 1000000; i++)
{
double x = cos(i * CONST_NUM);
z += x;
}
std::cout << ((float)clock() - startTime0) / CLOCKS_PER_SEC << std::endl;
std::cout << z << std::endl;
double const_num = CONST_NUM;
auto startTime1 = clock();
z = 0;
for (int i = 0; i < 1000000; i++)
{
double x = cos(i * const_num);
z += x;
}
std::cout << ((float)clock() - startTime1) / CLOCKS_PER_SEC << std::endl;
std::cout << z << std::endl;
return;
}
-------------------------------------------------------------------------------------
上面一个循环我写了两遍,第一遍是用宏,第二遍是把宏的值代出来。时间差很大。
有没有办法,让宏的部分能预先算出来。
一方面,我想保留常数的计算式,这样我下次读的时候知道这个常量是怎么算的,可以单独该其中的因子;
另一方面,我不想每次都做 double const_num = CONST_NUM;这样的步骤
