经过的时间以C为单位

问题描述

|
#include <time.h> 
time_t start,end; 
time (&start);
//code here
time (&end); 
double dif = difftime (end,start); 
printf (\"Elasped time is %.2lf seconds.\",dif ); 
我的开始时间和结束时间都达到了0.000。我不了解错误的来源。 也最好使用time(start)和time(end)或start = clock()和end = clock()来计算经过的时间。     

解决方法

        在大多数(实际上是所有?)系统上,
time()
的粒度仅为一秒,因此无法用它来测量任何亚秒级的时间长度。如果您使用的是Unix,请尝试使用
gettimeofday
。     ,        如果您确实想使用
clock()
,请确保您了解它仅测量CPU时间。另外,要转换为秒,您需要除以
CLOCKS_PER_SEC
。     ,        简短的代码摘录通常不会花很长时间来运行以进行概要分析。一种常见的技术是将调用重复很多(百万)次,然后将结果时间增量除以迭代计数。伪代码: 计数= 10,000,000 开始= readCurrentTime() 循环计数时间:     myCode() 结束= readCurrentTime() elapsedTotal =结束-开始 elapsedForOneIteration = elapsedTotal /计数 如果需要准确性,可以减少循环开销。例如: 循环计数时间:     myCode()     myCode() 并测量经过1(2 x计数迭代+循环开销) 循环计数时间:     myCode() 并测量elapsed2(计数迭代+循环开销) ActualElapsed =经过的1-经过的2 (计算迭代次数-因为其余术语会被抵消)     ,        
time
(至多)具有第二个分辨率。如果您的代码运行的时间远少于此,则您不太可能看到差异。 使用事件探查器(在* nix上为gprof,在OS X上为Instruments;对于Windows,请参见“使用Eclipse时在Windows上对C代码进行剖析”)来计时代码。     ,        在两次测量之间使用的代码运行速度太快。刚尝试过您的代码打印数字,范围是0到99,999,我得到了   擦除时间为1.00秒。     ,        您的代码运行不到一秒钟。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...