论坛首页 编程语言技术论坛

ruby线程运行速度测试

浏览 16978 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-11-02  
首先声明下,纯粹是想看下ruby thread和native thread的差距,并无意贬低ruby.

测试结果吓一跳,不是太快。和native thread相比,实在太慢。

代码很简单,每次启动10个ruby thread,做100000次的累加。连续运行10次,求运行平均值。
我的工作机,PC 2.8G,单核。1G内存,windows XP。测试的时候也没有特别清理运行环境,
最后的平均结果3.0937

time = 0
10.times do |k|
now = Time.now
puts now.to_s

count = 0
threads = []
10.times do |i|
	threads[i] = Thread.new do
		#sleep(rand(0.1))
		
		100000.times do |j|
			count += j
		end
		Thread.current["mycount"] = count
	end
end
	
	threads.each {|t| t.join; print t["mycount"], ", " }
	puts "count = #{count}"

later = Time.now
time += later-now
puts later-now
end
puts time/10


然后同样的代码用C++写了一份,运行时间都测试不出来,时间差值几乎是0。几乎程序刚刚启动,运行就结束了。不像Ruby代码,还像模像样的运行了段时间。

HOHO。


   发表时间:2006-11-02  
ruby的速度的确慢一点,我在本机跑develop环境下的ruby程序,那个慢。
0 请登录后投票
   发表时间:2006-11-02  
你应该换linux系统测试下
0 请登录后投票
   发表时间:2006-11-02  
ouspec 写道
ruby的速度的确慢一点,我在本机跑develop环境下的ruby程序,那个慢。

我的本机上用webrick测试,感觉还行(只是觉得老有个黑屏幕挂着觉得有点不舒服-winxp下)。
我的本机ror在apache cgi模式下慢得让人抓狂(测试了一下就再也不想用了)。网上说apache fastcgi模式下可以非常快,可惜没配置成功。同时也不想把apache降到apache1.3。
目前开发调试用webrick最便捷。环境配置是个基础问题,这个问题没解决好,对普及ror可能是阻碍。
0 请登录后投票
   发表时间:2006-11-02  
我的piv1.4G,512RAM,linux,平均是2.74s。
貌似在linux下性能更好一些?
0 请登录后投票
   发表时间:2006-11-02  
together 写道
我的piv1.4G,512RAM,linux,平均是2.74s。
貌似在linux下性能更好一些?


我测试的时候,开了大概10多个程序,还有几个是大型软件。还听着歌。总体效率多少是会影响到的,
不过linux也许会效率高些的,windows 毕竟不是ruby的理想运行环境.
0 请登录后投票
   发表时间:2006-11-02  
不是吧
我的测试结果是0.16s
P4-HT 1G
Ubunt 6.06 Linux-2.6.15-27-SMP
0 请登录后投票
   发表时间:2006-11-02  
我的平均是2.5s。也是Ubuntu 6.10 linux,AMD 1700+.
0 请登录后投票
   发表时间:2006-11-02  
这成了c++和ruby的对比了,不能算是ruby线程和native的比较,即便是只有一个线程,差距也会有这么大。
0 请登录后投票
   发表时间:2006-11-02  
qiezi 写道
这成了c++和ruby的对比了,不能算是ruby线程和native的比较,即便是只有一个线程,差距也会有这么大。


这也有道理,可能要对比下有native thread支持的ruby vm才正确。不过ruby慢的确是慢的很
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics