Ruby Ruby 2.1 的性能比之 Python 3.3 和 Perl 5.10 怎么样?多线程支持呢?

saitubao · 2014年04月02日 · 最后由 swachian 回复于 2014年04月03日 · 3993 次阅读

不知道 ruby 未来在性能这一块的发展前景看好么?谢谢了。

据说挺快了

性能上 Ruby 2.1 跟 Python 3.3 / Perl 在跟 C / Java 比較下大多數情況下也是相同層次。 ( 就是比較慢 >< )

多線程支持這個你要問 @luikore ,個人感覺上 Ruby Communities 暫時還沒有一個共識,celluloid 除了 Sidekiq 外也沒聽過用在其他地方。

严格来说,如果只是 ruby 的话,在开发语言上大部分语言性能基本上没有太多的优劣程度。 还是取决于你的项目,如果是 web 的话,多线程的应用不是很多。 rails 比较庞大,所以可能性能不是最好的。不依赖 rails 的 ruby 还是很强大的。 所以问题其实还是在于自己所开发的项目需求到什么程度上。

动态语言貌似都不能利用 native thread

有个基本的评测游戏的。Ruby2 的性能和你说的 python perl 是差不多的,按那个游戏的评测结果还高一点点,但真的是差不多的。 脚本语言里面,只有 javascript 的性能可以说是一枝独秀,比 ruby python 等快的多,差距在几倍以上。但 js 更没多线程什么事情。 其实对于多线程,真的不用太纠结。除了 java,其他编程环境,多线程运用的都不算广泛。多开几个进程,一般 CPU 也就可以利用满了。

#6 楼 @swachian Erlang 表示不服,Erlang 就检查一下类型都能把所有 CPU 用完,给几个核心就用完几个核心,默认还是占用所有核心的,无语了 ......

比 perl 5.10 快 多线程一直支持,只是一个进程最多占用一个核,现在偶尔可以双线程用到两个核了,以后把大锁拆成小锁就能用上所有核了。服务器和高性能计算是两回事,高性能计算用显卡更靠谱... 服务器多起几个进程就和那些所谓性能好的一样了。

#7 楼 @bhuztez 我记得 Erlang 自称是轻量级进程编程,不是多线程编程。多线程可没法开出成千上万个。Erlang 编程的多进程和 java 或者 ruby 是两马事情,不是 os 级别的线程,非要说像的话有点类似 ruby 纤程的概念。查看 Erlang 实际启动的 os 级别线程,基本上跟 cpu 的核数一致。但 java 的话,即便是 netty 之类的,一起动一般也十好几个 os 线程了,如果是 tomcat,那就是几百个了。 在 os 看来,erlang 只是起了少数几个线程,而且这些线程之间基本不共享应用数据,更类似多开几个 ruby,因为 ruby 进程间也不直接共享数据。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号