`
jack
  • 浏览: 392832 次
  • 来自: 温州
社区版块
存档分类
最新评论

ruby线程运行速度测试

阅读更多
首先声明下,纯粹是想看下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。


分享到:
评论
9 楼 jack 2006-11-02  
qiezi 写道
这成了c++和ruby的对比了,不能算是ruby线程和native的比较,即便是只有一个线程,差距也会有这么大。


这也有道理,可能要对比下有native thread支持的ruby vm才正确。不过ruby慢的确是慢的很
8 楼 qiezi 2006-11-02  
这成了c++和ruby的对比了,不能算是ruby线程和native的比较,即便是只有一个线程,差距也会有这么大。
7 楼 alang 2006-11-02  
我的平均是2.5s。也是Ubuntu 6.10 linux,AMD 1700+.
6 楼 whisper 2006-11-02  
不是吧
我的测试结果是0.16s
P4-HT 1G
Ubunt 6.06 Linux-2.6.15-27-SMP
5 楼 jack 2006-11-02  
together 写道
我的piv1.4G,512RAM,linux,平均是2.74s。
貌似在linux下性能更好一些?


我测试的时候,开了大概10多个程序,还有几个是大型软件。还听着歌。总体效率多少是会影响到的,
不过linux也许会效率高些的,windows 毕竟不是ruby的理想运行环境.
4 楼 together 2006-11-02  
我的piv1.4G,512RAM,linux,平均是2.74s。
貌似在linux下性能更好一些?
3 楼 axgle 2006-11-02  
ouspec 写道
ruby的速度的确慢一点,我在本机跑develop环境下的ruby程序,那个慢。

我的本机上用webrick测试,感觉还行(只是觉得老有个黑屏幕挂着觉得有点不舒服-winxp下)。
我的本机ror在apache cgi模式下慢得让人抓狂(测试了一下就再也不想用了)。网上说apache fastcgi模式下可以非常快,可惜没配置成功。同时也不想把apache降到apache1.3。
目前开发调试用webrick最便捷。环境配置是个基础问题,这个问题没解决好,对普及ror可能是阻碍。
2 楼 dennis_zane 2006-11-02  
你应该换linux系统测试下
1 楼 ouspec 2006-11-02  
ruby的速度的确慢一点,我在本机跑develop环境下的ruby程序,那个慢。

相关推荐

    Ruby多线程编程初步入门

    这意味着即使在多核处理器上,Ruby线程也不能实现真正的并行执行。然而,通过合理的设计和使用外部库(如多进程、Fiber等),仍然可以在Ruby中实现高性能的并发程序。 #### 四、示例代码分析 以下是一个简单的Ruby...

    Working with Ruby Threads

    ### Ruby线程开发技术详解 #### 引言 在计算机科学领域中,多线程编程是一种常见的技术,它允许多个任务同时运行在一个程序中。《Working with Ruby Threads》这本书深入探讨了Ruby语言中的线程机制,对于希望利用...

    多线程和并行程序设计

    我们创建了三个线程,每个线程运行不同的任务。这些线程在执行过程中,会在控制台上轮流打印字母和数字。这种设计使得任务的执行并行化,从用户的角度来看,输出的内容好像是线程同时运行产生的。 然而,在并发编程...

    Ruby-rubyinstall安装RubyJRubyRubiniusMagLevorMRuby

    通过这个工具,开发者可以轻松地在本地系统上设置多个Ruby版本,无需担心它们之间的冲突,这对于测试、开发和维护工作来说非常有用。 首先,让我们详细了解下这些不同的Ruby实现: 1. MRI (Matz's Ruby ...

    ruby-2.6.3源码压缩包

    4. **改进的并发模型**:Ruby 2.6加强了线程和并发处理,如更好的线程局部变量支持,以及线程池的优化,提升了多线程环境下的程序性能。 5. **新的垃圾回收(Garbage Collection, GC)算法**:引入了Shenandoah垃圾...

    ruby下载太慢保存下

    5. **使用带宽优化工具**:如`aria2`,这是一个支持多源、多线程下载的工具,可以提升大文件的下载速度。 描述中的“ruby下载太慢,上传一个”可能意味着提供者已经将Ruby的特定版本(如2.6.6)下载并打包,供他人...

    Ruby-ParallelRuby让并行处理简单和快速

    无论你是进行大数据分析、批量任务处理还是其他计算密集型工作,Parallel Ruby都能帮助你充分利用系统资源,提高代码的运行速度。通过熟练掌握这个库,你将能够编写出更加高效、响应更快的Ruby应用程序。

    ruby-enterprise-1.8.6-20090201

    1. **Performance Enhancements(性能提升)**:通过引入了一个名为“Maglev”的Garbage Collector(垃圾收集器),REE显著提高了Ruby应用程序的运行速度和内存效率。Maglev GC是一个全托管的数据库风格的GC,它可以...

    ruby2.6.1.zip

    3. **线程并行性增强**:Ruby 2.6加强了线程管理,允许在多核处理器上实现更好的并发性能,通过改进GVL(全局解释器锁)的实现,减少了线程之间的同步开销。 4. **安全的数组和哈希迭代**:为了防止某些类型的安全...

    ruby 1.9.3

    在性能方面,Ruby 1.9.3通过改进垃圾回收机制和提升解释器效率,显著提升了运行速度。这意味着开发者可以编写更复杂的程序,而不必过于担心性能问题。同时,1.9.3还引入了线程局部变量,为多线程编程提供了更好的...

    Ruby v2.6.3 正式版

    10. **YARV虚拟机**:Ruby 2.6.3使用YARV(Yet Another Ruby VM)作为其默认的解释器,这是一个高效的字节码虚拟机,提高了Ruby的执行速度。 在压缩包中,"说明.htm"可能是关于Ruby 2.6.3安装、配置或使用的指南,...

    ruby-2.7.0.tar.gz

    5. **性能提升**: Ruby 2.7对垃圾回收机制进行了优化,提升了整体运行速度,尤其是对于循环引用的处理。 6. **模块合并的改进**: 对于模块的合并操作,现在支持更灵活的控制,允许保留或覆盖已有方法,提高了代码...

    Ruby-forkoffruby简单的并行处理

    Ruby是一种动态、面向...通过合理利用`ForkOff`,开发者可以优化代码,提升程序的运行速度,尤其在处理大量数据或执行多个独立任务时效果显著。不过,使用时需注意其与线程的区别,以及进程间通信和资源管理的问题。

    ruby and it's tp

    线程池则是一种多线程处理形式,预先创建一组线程,用于执行各种任务,以提高系统的效率和响应速度。 在Ruby中,线程是通过Thread类来实现的。你可以创建一个新的线程并启动它,以执行特定的代码块。然而,直接创建...

    ruby-2.7.1.zip

    这个版本引入了多项性能提升措施,使得代码执行速度更快,尤其在处理大量数据或运行复杂算法时。此外,它还改善了内存管理,减少了内存占用,这对于资源有限的环境或大型应用来说非常关键。 另一个显著的变化是引入...

    ruby on rails 常用插件下载

    在 Ruby on Rails 中,多线程是一种处理并发请求的方式,尤其在现代硬件支持多核处理器的情况下,合理利用多线程可以有效地提升应用的响应速度。Rails 默认并不完全支持多线程,因为 Ruby 的 GIL(全局解释器锁)会...

    Ruby-Wombat轻量级的RubyWeb爬虫

    - **性能优化**:Wombat支持多线程和并发抓取,以提高爬取速度。但过度并发可能导致服务器压力过大,应适当调整并发级别,确保不影响网站正常运行。 - **数据清洗**:提取的数据可能包含噪声或无效信息,因此在处理...

Global site tag (gtag.js) - Google Analytics