首先声明下,纯粹是想看下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。
分享到:
相关推荐
MySQL (数据库服务器)是一款小型关联式数据库管理系统,MySQL (数据库服务器)的执行性能非常高,运行速度非常快,并非常容易使用,是一个非常捧的数据库。MySQL (数据库服务器)在世界上是最流行的数据库语言。...
MySQL (数据库服务器)是一款小型关联式数据库管理系统,MySQL (数据库服务器)的执行性能非常高,运行速度非常快,并非常容易使用,是一个非常捧的数据库。MySQL (数据库服务器)在世界上是最流行的数据库语言。...
在MRI上,有一个全局VM锁(GVL),可确保一次只有一个线程可以运行Ruby代码。 但是,如果您要进行大量的阻塞IO(例如对外部API(如Twitter)的HTTP调用),Puma仍然可以通过允许IO等待并行进行来提高MRI的吞吐量。 ...
如果您正在MRI中执行IO,或者在JRuby中执行任何操作,则可以使用线程来显着加快程序速度。 但是,线程是Ruby中的低级原语,可能很难使用。 Threaded库将一些常见的线程模式实现到易于使用的界面中。 这使您可以专注...
但是,这并不一定意味着它们将同时运行(例如,单个线程上有多个线程)内核机器。相反,并行是指两个任务在字面上同时运行(例如,多核处理器上的多个线程)” 为什么大量线程的性能很差? “答案是许多Ruby程序员...
Rust是一种运行速度极快,防止出现段错误并保证线程安全的系统编程语言。 特色 零成本抽象 移动语义 保证内存安全 没有数据争用的线程 基于特征的泛型 模式匹配 类型推断 最少的运行时间 有效的C绑定 摘自:来自...
通过在单个多线程进程中运行工作线程,delayed_job_celluloid 在内存使用和速度方面更加高效。安装将 delay_job_celluloid 添加到您的 gem 文件中 gem 'delayed_job_celluloid'运行捆绑安装 bundle install delayed...
另外,还有一些开源的在其他语言上的Qt绑定,如C#/Mono的绑定Qyoto,Python的绑定PyQt,Ruby的绑定QtRuby等。有了这些产品,编写Qt程序不再是C++程序员的专利了。 \Qt的发行版本有商业版和开源版。开源版遵循QPL(Q...
\ 第11章 事件机制 李立夏介绍了Qt的事件处理模型,详细介绍了在Qt程序设计中处理事件的五种方法,并讨论了如何利用Qt事件机制加快用户界面响应速度。 283 \ 第12章 数据库 李立夏介绍了Qt的数据库处理,重点介绍了...
是一种系统编程语言,运行速度极快,可以防止段错误,并保证线程安全 :有史以来使用最广泛的编程语言之一 : 具有命令式、面向对象和通用编程功能,同时还提供用于低级内存操作的设施 移动开发 : 一个用 React 构建...
它们肯定会加快文件IO操作的速度,但允许同时运行其他任务(从EM的角度来看)。 毫无疑问,这是否有意义,因为EM::defer可用于处理这些阻止任务。 但有时是不希望在单独的线程中执行它们的情况。 API与类代表的经典...
它由一个多线程的ruby应用程序驱动,该应用程序由I / O驱动程序,状态机,基于sinatra的Web应用程序和通过消息队列连接的json api组成。 最初是一个私人想法,后来发现它已成为在LAB团队活动中的一个小型项目。 ...
MySQL数据库具有以下特性: 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统...
MySQL数据库具有以下特性: 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统...
10.1.4 滚动速度属性——scrollamount 205 10.1.5 滚动延迟属性——scrolldelay 206 10.1.6 滚动循环属性——loop 207 10.1.7 滚动范围属性——width、height 208 10.1.8 滚动背景颜色属性——bgcolor 209...