c - 在 C 中的循环中获取特定代码部分的时序
问题描述
问题描述
下面我有一个程序正在执行两个简单的加法和乘法运算。然后,我将这两个简单操作的总和存储在两个分别称为 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;
}
解决方案
我不确定我是否理解您的问题,但是要分别为每个操作计时,您只需制作两个单独的循环。
#include <stdio.h>
#include <time.h>
int main()
{
long long total1 = 0, total2 = 0, i = 0, j = 1000000000;
double simulation_time1, simulation_time2;
clock_t Start, End;
/* addition */
Start = clock();
do
{
total1 += i + i;
i++;
} while (i < j);
End = clock();
simulation_time1 = (double)(End - Start) / CLOCKS_PER_SEC;
/* multiplication */
Start = clock();
do
{
total2 += i * i * i * i;
i++;
} while (i < j);
End = clock();
simulation_time2 = (double)(End - Start) / CLOCKS_PER_SEC;
printf("Total 1 = %u \n", total1);
printf("Total 2 = %u \n", total2);
printf("Runtime of Whole Simulation: %f\n"
"Runtime of Addition: %f\n"
"Runtime of Multiplication: %f\n",
simulation_time1 + simulation_time2,
simulation_time1, simulation_time2);
return 0;
}
推荐阅读
- javascript - 如何处理 NestJS 中的 TypeORM 错误?
- kotlin - 如何避免 kotlin Exposed 上的 N+1 查询问题。(当通过 DAO 的 Reference.id.value 字段获取值时)
- firebase - 使用像 Socket.io 这样的 Firebase?
- python - from_tensor_slices 返回一个空对象
- java - 无法连接到远程 apache ignite 节点
- ruby-on-rails - 由于 ArgumentError,ruby net-scp 文件夹复制递归失败:未知指令:“0664 13508
- python - 使用测试事件运行 aws lambda 上传文件(python)
- java - kafka-elasticsearch-consumer 单元测试问题
- javascript - p5.js 使用 setInterval、array.push()、for 循环创建动画时出现问题
- php - 如何让 Wordpress 编辑器访问 Google 插件的 Site Kit?