ste*_*och 184 ruby performance
我喜欢Ruby on Rails,我将它用于我的所有Web开发项目.几年前,有很多人谈论Rails是一种记忆生长以及它如何不能很好地扩展,但这些建议在这里由Gregg Pollack解决.
最近,我听说有人说Ruby本身很慢.
我发现Ruby不会很慢,但是我只是用它来制作简单的CRUD应用程序和公司博客.在我发现Ruby变慢之前,我需要做什么样的项目?或者这种缓慢只是影响所有编程语言的东西?
如果你想处理这种"慢",你作为Ruby程序员有什么选择?
哪个版本的Ruby最适合像Stack Overflow这样的应用程序,其中速度至关重要且流量很大?
这些问题是主观的,我意识到架构设置(EC2与独立服务器等)有很大的不同,但我想听听人们对Ruby慢慢的看法.
最后,我找不到关于Ruby 2.0的很多新闻 - 我认为它们离我们好几年了?
Jay*_*dse 184
为什么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这样的应用程序,其中速度至关重要且流量很大?
其他人已经回答了这个问题--JRuby,IronRuby,REE将使您的应用程序的Ruby部分在能够负担VM的平台上运行得更快.而且由于通常不是Ruby导致速度缓慢,但是您的计算机系统架构和应用程序架构,您可以执行诸如数据库复制,多个应用程序服务器,使用反向代理的负载平衡,HTTP缓存,内存缓存,Ajax,客户端缓存等等.这些东西都不是Ruby.
最后,我找不到关于Ruby 2.0的很多新闻 - 我认为它们离我们好几年了?
大多数人都在等待Ruby 1.9.1.我自己在等待JRuby上的Ruby 1.9.1上的Rails 3.1.
最后,请记住,许多开发人员选择Ruby是因为与其他语言相比,它使编程成为一种更愉快的体验,并且因为Ruby with Rails使熟练的Web开发人员能够非常快速地开发应用程序.
vla*_*adr 121
首先,相对于什么慢?C?蟒蛇?让我们在计算机语言基准游戏中获得一些数字:
为什么Ruby被认为很慢?
取决于你问谁.你可以被告知:
但是,那么又是什么呢?与C相比,Ruby 1.9的速度与Python和PHP一样快(在3倍的性能因素内)(可以快300倍),所以上述(除了线程注意事项,应用程序在很大程度上取决于这个方面) )主要是学术性的.
如果你想处理这种"慢",你作为Ruby程序员有什么选择?
写入可伸缩性并在其上投入更多硬件(例如内存)
哪个版本的Ruby最适合像Stack Overflow这样的应用程序,其中速度至关重要且流量很大?
rjh*_*rjh 60
以下是Rails的创建者David Heinemeier Hansson所说的:
Rails [Ruby]适用于绝大多数Web应用程序Fast Fast.我们的网站每天都会进行数百万次动态页面浏览.如果您最终使用雅虎或亚马逊的首页,那么任何语言中的现成框架都不太可能对您有所帮助.你可能不得不自己动手.但是可以肯定的是,我也想要免费的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开始比语言的速度更重要,所以我将专注于优化它.
Jam*_*olk 34
编写代码很慢.阅读代码很慢.查找和修复错误很慢.添加功能和增强功能很慢.任何改进的东西都是胜利.执行性能很少是一个问题.
Bry*_*ley 15
答案很简单:人们说红宝石很慢,因为根据与其他语言的测量比较,它很慢.但请记住,"慢"是相对的.通常,ruby和其他"慢"语言足够快.
关于软件的Joel-再探Ruby性能 很好地解释了这一点。可能会过时了...
我建议您像在Ruby on Rails上一样坚持使用它,
如果遇到性能问题,您可能会重新考虑使用其他语言和框架。
在那种情况下,我真的建议将C#与ASP.NET MVC 2配合使用,对于CRUD应用程序非常有效。