首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么人们说Ruby很慢?

为什么人们说Ruby很慢?
EN

Stack Overflow用户
提问于 2010-03-27 23:40:07
回答 14查看 135.7K关注 0票数 187

我喜欢Ruby on Rails,我把它用在我所有的web开发项目中。几年前,有很多关于Rails是内存大户的讨论,以及它如何不能很好地扩展,但这些建议被Gregg Pollack .搁置

不过,最近我一直听到人们说Ruby本身很慢。

  • 为什么认为Ruby慢?

我并不觉得Ruby很慢,但我只是用它来制作简单的CRUD应用程序和公司博客。在我发现Ruby变慢之前,我需要做什么样的项目?或者这种缓慢只是影响所有编程语言的东西?

如果你想处理这个"slowness"?

  • Which版本的
  • ,作为一个Ruby程序员,你有什么选择?

这些问题是主观的,我意识到架构设置(EC2和独立服务器等)有很大的不同,但我想听听人们对Ruby速度慢的看法。

最后,我在Ruby 2.0上找不到太多的消息--我想我们离Ruby 2.0还有很长一段时间?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2010-03-28 09:54:40

为什么

被认为很慢?

因为如果在Ruby和其他语言之间运行典型的基准测试,Ruby会输。

我并不觉得Ruby很慢,但我只是用它来制作简单的CRUD应用程序和公司博客。在我发现Ruby变慢之前,我需要做什么样的项目?或者这种缓慢只是影响所有编程语言的东西?

在编写实时数字信号处理应用程序或任何类型的实时控制系统时,Ruby可能不能很好地为您服务。Ruby (使用今天的VM)可能会在资源受限的计算机(如智能手机)上卡住。

请记住,web应用程序上的许多处理实际上是由C开发的软件完成的。例如,Apache、Thin、Nginx、SQLite、MySQL、PostgreSQL、许多解析库、RMagick、TCP/IP等都是Ruby使用的C程序。Ruby提供了粘合剂和业务逻辑。

如果你想解决这个“慢”问题,作为一个Ruby程序员,你有什么选择?

切换到速度更快的语言。但这是有代价的。这可能是值得的代价。但对于大多数web应用程序来说,语言选择并不是一个相关的因素,因为没有足够的流量来证明使用开发成本更高的更快的语言是合理的。

哪个版本的Ruby最适合像Stack Overflow这样对速度和流量要求很高的应用程序?

其他人已经回答了这个问题-- JRuby、IronRuby、REE会让你的应用程序中的Ruby部分在负担得起虚拟机的平台上运行得更快。由于造成速度缓慢的原因通常不是Ruby,而是您的计算机系统架构和应用程序架构,因此您可以执行诸如数据库复制、多个应用程序服务器、反向代理的负载平衡、HTTP缓存、memcache、Ajax、客户端缓存等工作。

最后,我在Ruby2.0上找不到太多的消息--我想我们离Ruby2.0还有很长一段时间?

大多数人都在等待Ruby 1.9.1的发布。我自己也在等待JRuby上的Ruby1.9.1上的Rails3.1。

最后,请记住,许多开发人员选择Ruby是因为与其他语言相比,Ruby使编程变得更加愉快,而且Ruby with Rails使熟练的web开发人员能够非常快速地开发应用程序。

票数 188
EN

Stack Overflow用户

发布于 2010-03-27 23:59:24

首先,相对于什么,变慢了?C?Python?让我们在Computer Language Benchmarks Game上获取一些数字

为什么

被认为很慢?

这取决于你问的是谁。你可能会被告知:

  • Ruby是一种解释语言,解释语言往往比编译语言慢
  • Ruby使用垃圾收集(尽管在上面的算法较多、内存分配密集型较少的基准测试中,C#也使用垃圾收集,比Ruby、Python、PHP等快两个数量级)

<代码>H140Ruby<代码>E141方法调用很慢<代码>E242(尽管,由于是鸭子类型,它们可以说比强类型解释型does not support

  • etc.

(JRuby除外)要快

但是,话又说回来,慢在什么方面呢?与C相比,Ruby 1.9的速度和Python和PHP差不多(在3倍的性能范围内),所以上面的内容(除了线程方面的考虑,如果你的应用程序在很大程度上依赖于这一方面)在很大程度上是理论上的。

如果你想解决这个“慢”问题,作为一个Ruby程序员,你有什么选择?

写入可伸缩性,并在其上投入更多硬件(例如内存)

哪个版本的Ruby最适合像Stack Overflow这样对速度和流量要求很高的应用程序?

嗯, ) (与相结合)将是一个非常好的候选者。

票数 122
EN

Stack Overflow用户

发布于 2010-03-27 23:56:01

以下是Rails的创建者David Heinemeier Hansson所说的话:

Rails Ruby对于绝大多数web应用程序来说已经足够快了。我们的网站每天有数百万的动态页面浏览量。如果你最终使用的是雅虎或亚马逊的首页,那么任何语言的现成框架都不太可能对你有太大的好处。你可能得自己动手了。当然,我也想要空闲的CPU周期。我只是碰巧更关心免费的开发者周期,并且愿意用前者来换取后者。

也就是说,在这个问题上投入更多的硬件或机器比雇佣更多的开发人员和使用更快,但更难维护的语言更便宜。毕竟,很少有人用C语言编写web应用程序。

Ruby 1.9是对1.8的巨大改进。Ruby1.8最大的问题是它的解释性(没有字节码,没有编译),方法调用,Ruby中最常见的操作之一,特别慢。

在Ruby中几乎所有的东西都是一个方法查找--添加两个数字,索引一个数组--这并没有什么帮助。在其他语言暴露黑客的情况下(Python的__add__方法,Perl的overload.pm),Ruby在所有情况下都是纯面向对象的,如果编译器/解释器不够聪明,这可能会损害性能。

如果我正在用Ruby编写一个流行的web应用程序,我的关注点应该是缓存。缓存页面可以将该页面的处理时间减少到零,无论您使用的是哪种语言。对于web应用程序,数据库开销和其他I/O开始比语言的速度更重要,所以我将重点放在优化上。

票数 60
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2529852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档