鲁比在某些事情上react 迟钝.但问题最大的部分是什么?

垃圾收集器对性能的影响有多大?我知道我曾经有过单独运行垃圾收集器需要几秒钟的经历,尤其是在使用OpenGL库时.

我在Ruby中使用过矩阵数学库,它们的速度特别慢.ruby如何实现基础数学有问题吗?

Ruby中是否有任何无法有效实现的动态特性?如果是这样的话,Lua和Python等其他语言如何解决这些问题?

最近有没有显著提高绩效的工作?

推荐答案

鲁比很慢.但问题最大的部分是什么?

它对方法进行"后期查找",以允许灵活性.这让它慢了很多.它还必须记住每个上下文的变量名以允许eval,因此它的帧和方法调用较慢.此外,它目前还缺乏一个好的JIT编译器,尽管MRI 1.9有一个字节码编译器(更好),jruby将其编译成java字节码,然后通过HotSpot JVM的JIT编译器进行编译,但最终的速度与1.9差不多.

垃圾收集器对性能的影响有多大?我知道我曾经有过单独运行垃圾收集器需要几秒钟的经历,尤其是在使用OpenGL库时.

http://www.igvita.com/2009/06/13/profiling-ruby-with-googles-perftools/的一些图中,我可以说需要大约10%,这是相当大的一点——你可以通过增加gc中的malloc_限制来减少这种影响.c和重新编译.

我在Ruby中使用过矩阵数学库,它们的速度特别慢.ruby如何实现基础数学有问题吗?

Ruby 1.8"没有"实现基本数学,它实现了数值类,每次调用都会调用Fixnum#+Fixnum#/一次,这很慢.Ruby 1.9通过内联一些基本的数学运算来作弊.

Ruby中是否有任何无法有效实现的动态特性?如果是这样的话,Lua和Python等其他语言如何解决这些问题?

像eval这样的东西很难有效地实现,尽管我相信还有很多工作要做.Ruby的关键在于,它必须适应某些人自发地改变类的定义,所以它必须非常保守.

最近有没有显著提高绩效的工作?

1.9就像是2倍的加速.它也更节省空间.JRuby一直在努力提高速度(而且在GC中花费的时间可能比KRI少).除此之外,除了我一直在做的一些小爱好,我知道的不多.还要注意的是,1.9的字符串有时较慢,因为编码友好.

Ruby相关问答推荐

try 安装Chruby时出现问题,终端问题

Ruby中链表大小调用的时间复杂度

ruby 组合哈希相关键

如何在 Ruby 中创建可调用属性

while 语句的主体是块吗?

如何在 ruby​​ 中通过 SSL 调用 HTTP POST 方法?

如果 Java 人go Scala,C# go F#,那么 Ruby 人go 哪里寻求函数式?

`Range#include?` 和 `Range#cover?` 有什么区别?

Ruby gem 权限被拒绝 /var/lib/gems 使用 Ubuntu

在 YAML 变量中包含 jekyll / liquid 模板数据?

Coffeescript 中等效的 Ruby .times

Ruby数组中的`return`#map

如何使用 if..else 块的结果分配变量?

无法正确自动生成 Ruby DevKit 配置文件

Sinatra 登录?

如何在Ruby中获取给定月份的天数,占年份?

将 CSV 文件转换为哈希数组

如何在器上下文中运行 ruby​​ 脚本?

如何解决/usr/bin/env: ruby​​_executable_hooks: No such file or directory?

传递哈希而不是方法参数