【发布时间】:2018-12-03 04:35:10
【问题描述】:
问题描述
下面我有一个程序正在执行两个简单的加法和乘法运算。然后,我将这两个简单操作的总和存储在两个分别称为 total1 和 total2 的变量中。就计算而言,total2 将需要更多时间才能完全执行。按照我实现代码的方式,我目前正在对两个数学运算的整个模拟进行计时。
问题
是否可以单独计算 total1 和 total 2 的最终结果?我这样问是因为我希望以单独的方式获得 total1 和 total2 的具体时间。
任务目的
我完全意识到 long long 对内存来说是昂贵的,并且不是节省内存的最有效方法。此代码和问题的唯一目的是计时而不是代码优化。
C 代码
#include <stdio.h>
#include <time.h>
int main()
{
long long total1 = 0, total2 = 0, i = 0;
double simulation_time = 0;
clock_t Start = clock();
do
{
total1 += i + i;
total2 += i * i * i * i;
i++;
} while (i < 1000000000);
clock_t End = clock();
printf("Total 1 = %u \n", total1);
printf("Total 2 = %u \n", total2);
simulation_time = (double)(End - Start) / CLOCKS_PER_SEC;
printf("Runtime of Whole Simulation using clock_t: %f\n", simulation_time);
return 0;
}
【问题讨论】:
-
当在 Visual Studio 中查看此内容时,调试器告诉我所有变量都已被优化掉,所以请使用 no memory。只注册。
total1 += i + i;的代码变成了一个单一的操作lea rdi,[rdi+rbx*2],英特尔的手册可以告诉你在 PC 上只需要几分之一纳秒。你真的需要更仔细地衡量这个吗?
标签: c time do-while clock time.h