【发布时间】:2010-10-28 09:34:54
【问题描述】:
我有以下 C99 程序,用于测量相对于加法的简单除法运算的性能。然而,difftime 函数仍然返回 0,即使程序显然需要几秒钟来处理 runAddition 和 runDivision 而 iterations 设置为 10 亿。
#include <stdio.h>
#include <time.h>
void runAddition(long long iterations)
{
long long temp;
for (long long i = 1; i <= iterations; i++)
{
temp = temp + i;
}
}
void runDivision(long long iterations)
{
long long temp;
// Start at 1 to avoid division by 0!
for (long long i = 1; i <= iterations; i++)
{
temp = temp / i;
}
}
int main()
{
long long iterations = 1000000000;
time_t startTime;
printf("How many iterations would you like to run of each operation? ");
scanf("%d", &iterations);
printf("Running %d additions...\n", iterations);
startTime = time(NULL);
runAddition(iterations);
printf("%d additions took %f seconds\n", iterations, difftime(time(NULL), startTime));
printf("Running %d divisions...\n", iterations);
startTime = time(NULL);
runDivision(iterations);
printf("%d divisions took %f seconds\n", iterations, difftime(time(NULL), startTime));
}
【问题讨论】:
-
最好从 0 而不是 1 开始循环计数。
-
是的,但是你看到我的评论了吗? “从 1 开始,避免被 0 除”
-
出于兴趣,您是否尝试将 startTime ref 传递给 time() - 即更改 startTime = time(NULL);到时间(&startTime)?不确定为什么会有所帮助,它们都是同一件事......只是好奇。
标签: c