首先声明下,纯粹是想看下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。
分享到:
相关推荐
这意味着即使在多核处理器上,Ruby线程也不能实现真正的并行执行。然而,通过合理的设计和使用外部库(如多进程、Fiber等),仍然可以在Ruby中实现高性能的并发程序。 #### 四、示例代码分析 以下是一个简单的Ruby...
### Ruby线程开发技术详解 #### 引言 在计算机科学领域中,多线程编程是一种常见的技术,它允许多个任务同时运行在一个程序中。《Working with Ruby Threads》这本书深入探讨了Ruby语言中的线程机制,对于希望利用...
我们创建了三个线程,每个线程运行不同的任务。这些线程在执行过程中,会在控制台上轮流打印字母和数字。这种设计使得任务的执行并行化,从用户的角度来看,输出的内容好像是线程同时运行产生的。 然而,在并发编程...
通过这个工具,开发者可以轻松地在本地系统上设置多个Ruby版本,无需担心它们之间的冲突,这对于测试、开发和维护工作来说非常有用。 首先,让我们详细了解下这些不同的Ruby实现: 1. MRI (Matz's Ruby ...
4. **改进的并发模型**:Ruby 2.6加强了线程和并发处理,如更好的线程局部变量支持,以及线程池的优化,提升了多线程环境下的程序性能。 5. **新的垃圾回收(Garbage Collection, GC)算法**:引入了Shenandoah垃圾...
5. **使用带宽优化工具**:如`aria2`,这是一个支持多源、多线程下载的工具,可以提升大文件的下载速度。 描述中的“ruby下载太慢,上传一个”可能意味着提供者已经将Ruby的特定版本(如2.6.6)下载并打包,供他人...
无论你是进行大数据分析、批量任务处理还是其他计算密集型工作,Parallel Ruby都能帮助你充分利用系统资源,提高代码的运行速度。通过熟练掌握这个库,你将能够编写出更加高效、响应更快的Ruby应用程序。
1. **Performance Enhancements(性能提升)**:通过引入了一个名为“Maglev”的Garbage Collector(垃圾收集器),REE显著提高了Ruby应用程序的运行速度和内存效率。Maglev GC是一个全托管的数据库风格的GC,它可以...
3. **线程并行性增强**:Ruby 2.6加强了线程管理,允许在多核处理器上实现更好的并发性能,通过改进GVL(全局解释器锁)的实现,减少了线程之间的同步开销。 4. **安全的数组和哈希迭代**:为了防止某些类型的安全...
在性能方面,Ruby 1.9.3通过改进垃圾回收机制和提升解释器效率,显著提升了运行速度。这意味着开发者可以编写更复杂的程序,而不必过于担心性能问题。同时,1.9.3还引入了线程局部变量,为多线程编程提供了更好的...
10. **YARV虚拟机**:Ruby 2.6.3使用YARV(Yet Another Ruby VM)作为其默认的解释器,这是一个高效的字节码虚拟机,提高了Ruby的执行速度。 在压缩包中,"说明.htm"可能是关于Ruby 2.6.3安装、配置或使用的指南,...
5. **性能提升**: Ruby 2.7对垃圾回收机制进行了优化,提升了整体运行速度,尤其是对于循环引用的处理。 6. **模块合并的改进**: 对于模块的合并操作,现在支持更灵活的控制,允许保留或覆盖已有方法,提高了代码...
Ruby是一种动态、面向...通过合理利用`ForkOff`,开发者可以优化代码,提升程序的运行速度,尤其在处理大量数据或执行多个独立任务时效果显著。不过,使用时需注意其与线程的区别,以及进程间通信和资源管理的问题。
线程池则是一种多线程处理形式,预先创建一组线程,用于执行各种任务,以提高系统的效率和响应速度。 在Ruby中,线程是通过Thread类来实现的。你可以创建一个新的线程并启动它,以执行特定的代码块。然而,直接创建...
这个版本引入了多项性能提升措施,使得代码执行速度更快,尤其在处理大量数据或运行复杂算法时。此外,它还改善了内存管理,减少了内存占用,这对于资源有限的环境或大型应用来说非常关键。 另一个显著的变化是引入...
在 Ruby on Rails 中,多线程是一种处理并发请求的方式,尤其在现代硬件支持多核处理器的情况下,合理利用多线程可以有效地提升应用的响应速度。Rails 默认并不完全支持多线程,因为 Ruby 的 GIL(全局解释器锁)会...
- **性能优化**:Wombat支持多线程和并发抓取,以提高爬取速度。但过度并发可能导致服务器压力过大,应适当调整并发级别,确保不影响网站正常运行。 - **数据清洗**:提取的数据可能包含噪声或无效信息,因此在处理...