马大哈 发表于 2012-11-7 22:22:36

猎豹浏览器居然能提高Sleep函数的精度??测试为证,有图有真相

有点意思,是之前写一个绘图程序,为了让图像的生成过程有个视觉效果,所以每绘一条线后就Sleep 1,这样就能有个绘出来的效果,而不是"啪"地一下子绘出来.

但是发现有时绘制速度快了一倍不止,有时又慢了点,就觉得怪,代码没动过啊.

结果才注意到与打开了猎豹浏览器有关,它使用的内核是Chrome内核,让我想起了CSDN上的一个哥们开的帖子,他当时也遇到的问题是开了Chrome浏览器后他的程序性能提升进10倍(帖子见:http://bbs.csdn.net/topics/310257253).

于是我想了一下,唯一能影响的只能是Sleep函数,便写了个工程进行测试(代码在后面),结果如图:

以下是未开猎豹浏览器时的效果:

http://www.m5home.com/blog//uploadfiles/1_86376.jpg

以下是打开猎豹后并开几个图片与脚本比较多的页面,例如开三五个淘宝首页后:

http://www.m5home.com/blog//uploadfiles/2_64973.jpg

这Sleep函数的精度一下子就提高了,真是怪.

我也测试过CPU的频率,好象也不是频率被提高了,只与这浏览器有关.

代码下载地址:

http://www.m5home.com/blog/archives/2012/11/32.html

大家测试一下看看,有点意思的,哈哈.

马大哈 发表于 2012-11-7 23:49:45

把上一篇"猎豹浏览器居然能提高Sleep函数的精度??测试为证,有图有真相"发到群里后,大家研究了好一阵,都觉得挺有意思

不过在我们还在研究为什么Chrome内核会对Sleep函数的精度进行影响时,凄临雨同学直接对所有人进行BS,原因是这问题是个非常简单,就是一个调用timeBeginPeriod/timeEndPeriod函数设置定时器精度而已.

当下一试,果然,加入timeBeginPeriod/timeEndPeriod后定时器精度就上来了,哈哈!

这顿BS真是划得来,又学会一招 {:soso_e113:}

在此感谢大家,特别感谢 凄临雨 同学!

加入timeBeginPeriod/timeEndPeriod后的测试代码:

http://www.m5home.com/blog/archives/2012/11/33.html

jessezappy 发表于 2012-11-8 00:22:50

那,为何不开浏览器时不同机器测试结果不同呢?难道是因为各机器定时器精度本身就不同?我记得原来看高精度延时函数的时候,里面有个判断,说是有的机器不支持高精度计时器。

billypon 发表于 2012-11-8 11:32:26

有可能是sleep的优先级不一样?最终造成精度不一样?

马大哈 发表于 2012-11-17 12:03:51

jessezappy 发表于 2012-11-8 00:22 static/image/common/back.gif
那,为何不开浏览器时不同机器测试结果不同呢?难道是因为各机器定时器精度本身就不同?我记得原来看高精度 ...

已经搞清楚了,是用timeBeginPeriod/timeEndPeriod函数设置定时器精度

马大哈 发表于 2012-11-17 12:04:07

billypon 发表于 2012-11-8 11:32 static/image/common/back.gif
有可能是sleep的优先级不一样?最终造成精度不一样?

看第二帖,哈哈.
页: [1]
查看完整版本: 猎豹浏览器居然能提高Sleep函数的精度??测试为证,有图有真相