为什么人们说Ruby比较慢?

我喜欢Ruby on Rails,并将其用于我的所有Web开发项目。 几年前,有很多关于Rails是一个记忆猪的话题,以及它如何不能很好地扩展,但这些建议是由Gregg Pollack 在这里放置的

但最近我听到有人说Ruby本身很慢。

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

  • 如果你想处理这种“缓慢”,你有什么选择作为Ruby程序员?

  • 哪个版本的Ruby最适合像Stack Overflow那样的速度至关重要且流量很大的应用程序?

  • 这些问题是主观的,我意识到架构设置(EC2 vs独立服务器等)会产生很大的差异,但我想听听人们如何看待Ruby缓慢。

    最后,我无法在Ruby 2.0上找到太多新闻 - 我认为我们距离那几年还有好几年?


    为什么Ruby认为缓慢?

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

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

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

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

    如果你想处理这种“缓慢”,你有什么选择作为Ruby程序员?

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

    哪个版本的Ruby最适合像Stack Overflow那样的速度至关重要且流量很大的应用程序?

    其他人已经回答了这个问题--RRuby,IronRuby和REE将使您的应用程序的Ruby部分在支持虚拟机的平台上运行得更快。 由于Ruby通常不会导致速度缓慢,但是您的计算机系统体系结构和应用程序体系结构,您可以执行诸如数据库复制,多个应用程序服务器,带有反向代理的负载平衡,HTTP缓存,memcache,Ajax,客户端缓存等等。这些东西都不是Ruby。

    最后,我无法在Ruby 2.0上找到太多新闻 - 我认为我们距离那几年还有好几年?

    大多数人都在等Ruby 1.9.1。 我自己正在等待JRuby上的Ruby 1.9.1上的Rails 3.1。

    最后,请记住,很多开发人员选择Ruby,因为与其他语言相比,它使编程更加快乐,并且由于Ruby with Rails使熟练的Web开发人员能够非常快速地开发应用程序。


    首先, 在什么方面比较慢 ? C? 蟒蛇? 让我们在计算机语言基准游戏中获得一些数字

  • Ruby 1.9与Python3在相同的数量级内
  • Ruby 1.9与PHP的数量级相同
  • Ruby 1.9与Java 6服务器相比, 速度降低了两个数量级
  • Ruby 1.9与C(gcc)相比, 速度降低两个数量级
  • ...
  • 为什么Ruby认为缓慢?

    取决于你问的对象。 你可能会被告知:

  • Ruby是一种解释型语言 ,解释型语言往往比编译型语言慢
  • Ruby使用垃圾收集 (虽然C#也使用垃圾收集,但在上述算法较少,内存分配密集程度较低的基准测试中,比Ruby,Python,PHP等先出两个数量级)
  • Ruby 方法的调用速度很慢 (尽管由于鸭子打字的原因,它们可以说比在强类型的解释语言中快)
  • Ruby(除了JRuby)不支持真正的多线程
  • 等等
  • 但是,那么,关于什么呢? 与C相比,Ruby 1.9的速度与Python和PHP(速度的3倍)相差无几(速度可以提高300倍),所以上述(除了线程考虑之外,应用程序是否应该很大程度上依赖于此方面)主要是学术性的。

    如果你想处理这种“缓慢”,你有什么选择作为Ruby程序员?

    编写可扩展性并投入更多硬件 (例如内存)

    哪个版本的Ruby最适合像Stack Overflow那样的速度至关重要且流量很大的应用程序?

    那么, 稀土(与乘客结合)将是一个非常好的候选人。


    这就是Rails的创造者David Heinemeier Hansson所说的:

    Rails [Ruby]适用于绝大多数Web应用程序的Fast Enough。 我们有网站每天进行数百万次动态页面浏览。 如果您最终选择雅虎或亚马逊首页,那么以任何语言使用现成的框架都不太可能对您有所帮助。 你可能不得不推出自己的。 但是,当然,我也想要免费的CPU周期。 我只是关心更多关于免费开发者的周期,并且愿意为后者交易前者。

    即在问题中投掷更多硬件或机器比雇用更多开发人员更便宜,使用速度更快,但难以维护语言。 毕竟,很少有人用C编写Web应用程序。

    Ruby 1.9比1.8版本有了很大的提升。 Ruby 1.8的最大问题是它的解释性(没有字节码,没有编译),方法调用是Ruby中最常见的操作之一,特别慢。

    在Ruby中,几乎所有的方法都是查找方法 - 增加两个索引数组的索引。 在其他语言暴露黑客的地方(Python的__add__方法,Perl的overload.pm)Ruby在所有情况下都会执行纯粹的OO,如果编译器/解释器不够聪明,这可能会损害性能。

    如果我在Ruby中编写流行的Web应用程序,我的重点将放在缓存上。 无论您使用哪种语言,缓存页面都会将该页面的处理时间减少到零。 对于Web应用程序,数据库开销和其他I / O开始比语言的速度慢得多,所以我会专注于优化。

    链接地址: http://www.djcxy.com/p/79325.html

    上一篇: Why do people say that Ruby is slow?

    下一篇: What exactly happens call async method without await keyword?