首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有没有人用gettimeofday时遇到有关问题的

2012-02-22 
有没有人用gettimeofday时遇到问题的?本来用gettimeofday函数测其他函数的运行时间。(Linux下)但在反复多次

有没有人用gettimeofday时遇到问题的?
本来用gettimeofday函数测其他函数的运行时间。(Linux下)
但在反复多次测试过程中,总有偶尔产生偏差极大的结果
比如95%的时间都是8ms,结果偶尔蹦出来100ms,200ms,甚至1s的。。。

开始怀疑是待测函数有问题,就又分段测,看那段拖延了时间
结果发现各个段几乎都有一定概率突然变慢。。。

后来干脆把gettimeofday函数拿来测,发现99%的时间都是1us,其他有10us   20us   50us以及最大一次1000+   us

难道是系统进程调用占去了这些时间?


No.1   code   used   96761   us <===
No.2-1   code   used   9   us
No.2-1   code   used   4251   us
No.2-1   code   used   4090   us
No.2-1   code   used   10766   us
No.2-2   code   used   3821   us
No.3-1   code   used   260   us
No.3-2   code   used   52   us
used   120905   us   this   time

No.1   code   used   133   us
No.2-1   code   used   6   us
No.2-1   code   used   23898   us
No.2-1   code   used   3972   us
No.2-1   code   used   3723   us
No.2-2   code   used   3890   us
No.3-1   code   used   66188   us <===
No.3-2   code   used   245   us
used   102321   us   this   time

No.1   code   used   97   us
No.2-1   code   used   4   us
No.2-1   code   used   73485   us <===
No.2-1   code   used   3666   us
No.2-1   code   used   3647   us
No.2-2   code   used   3885   us
No.3-1   code   used   538   us
No.3-2   code   used   61   us
used   162639   us   this   time

No.1   code   used   97   us
No.2-1   code   used   4   us
No.2-1   code   used   4027   us
No.2-1   code   used   3764   us
No.2-1   code   used   3529   us
No.2-2   code   used   125457   us <===
No.3-1   code   used   613   us
No.3-2   code   used   294   us
used   138559   us   this   time

No.1   code   used   102   us
No.2-1   code   used   5   us
No.2-1   code   used   18824   us
No.2-1   code   used   3459   us
No.2-1   code   used   12950   us
No.2-2   code   used   3720   us
No.3-1   code   used   1017431   us <===
No.3-2   code   used   367   us
used   1057245   us   this   time

No.1   code   used   386   us
No.2-1   code   used   8   us
No.2-1   code   used   4183   us
No.2-1   code   used   4026   us
No.2-1   code   used   3956   us
No.2-2   code   used   3785   us
No.3-1   code   used   263   us
No.3-2   code   used   53   us
used   245389   us   this   time <===   时间哪去了?

测试的语句都是挨着写的,一条时间结束立即printf结果接着马上开始下一个计时开始,有时候就会像最后一个这种,总时间跟各个分项时间加和不等!!
(总时间是这样计算的:
gettimeofday(&tstart,NULL);
store();
gettimeofday(&tend,NULL);
然后做差打印,应该没有问题啊)



[解决办法]
进程调度,有很多的随机性.
------解决方案--------------------


强制CPU只运行这个程序不行的
但是你同样也可以提高优先级
man 2 nice
[解决办法]
不是实时操作系统,定时是不会准的.

热点排行