Ruby性能

时间:2020-03-05 18:42:47  来源:igfitidea点击:

我非常热衷于开发自己的第一个Ruby应用程序,因为我的公司终于在内部对其进行了使用。

在我所读的有关Ruby直至v1.8的所有内容中,从来没有任何关于性能的正面评价,但是我对1.9版一无所获。我看到的最后一个数字大约是1.8,远比那里的所有数据慢得多,所以我希望在1.9中能够解决此问题。

性能已大大提高了吗? Ruby应用程序是否可以做一些具体的事情(或者避免的事情)以保持最佳性能?

解决方案

回答

实际上,我已经听说过有关JVM实现JRuby的真正出色的性能。完全是轶事,但也许值得研究。

另请参见http://en.wikipedia.org/wiki/JRuby#Performance

回答

http://www.rubychan.de/share/yarv_speedups.html上有一些基准测试,分别是1.8和1.9. 总体而言,大多数情况下1.9看起来要快得多。

回答

Matz ruby​​ 1.8.6在性能方面要慢得多,而1.9和JRuby则在很大程度上加快了性能。但是性能并不足以阻止我们在Web应用程序中执行任何所需的操作。有许多大型的Ruby on Rails站点都可以很好地使用"较慢的解释"语言。当我们要扩展Web应用程序时,与编写语言的速度相比,还有许多紧迫的性能问题。

回答

如果可伸缩性和性能对我们确实很重要,那么我们也可以查看Ruby Enterprise Edition。这是Ruby解释器的自定义实现,应该在内存分配和垃圾回收方面要好得多。我还没有看到任何客观的指标可以直接将其与JRuby进行比较,但是我所听到的所有轶事证据都非常好。

这是与创建Passenger(aka mod_rails)的公司相同的公司,如果我们决定不使用JRuby路线,则绝对应该将其作为rails部署解决方案签出。

回答

请查看Addison Wesley Professional的"编写高效的Ruby代码":

http://safari.oreilly.com/9780321540034

在这段简短的工作中,我发现了一些非常有用和有趣的见解。如果我们注册了免费的10天试用版,则可以免费阅读。 (这是50页,试用版使我们(AFAIR)拥有100页浏览量。)

https://ssl.safaribooksonline.com/promo

回答

我不是Ruby程序员,但是最近我一直紧密参与JRuby部署,因此可以得出一些结论。不要对JRuby的性能抱有太大期望。在解释模式下,它似乎在C Ruby范围内。 JIT模式可能更快,但仅在理论上如此。实际上,我们在Glassfish上尝试了JIT模式,以在中型服务器(双核,8GB RAM)上实现大小合适的Rails应用程序。事实是,JITting花费了如此多的时间,以至于服务器需要20-30分钟才能回答第一个请求。内存使用量是天文数字,无法进行分析,因为整个系统在连接了探查器的情况下无法运行。

底线:JRuby有其优点(多线程,可靠的平台,易于Java集成),但是鉴于解释模式是实践中唯一对我们有用的模式,因此在性能方面,可能不会比C Ruby更好。

回答

我对使用"乘客"的建议表示赞同,它使Rails应用程序的部署和管理变得微不足道。