我喜欢 Ruby on Rails,并将它用于我所有的 Web 开发项目。几年前,有很多关于 Rails 是内存猪以及它如何不能很好地扩展的讨论,但 Gregg Pollack 在这里 搁置了这些建议。
不过最近,我听到有人说 Ruby 本身很慢。
我不觉得 Ruby 很慢,但是我只是用它来制作简单的 CRUD 应用程序和公司博客。在我发现 Ruby 变慢之前,我需要做什么类型的项目?或者这种缓慢只是影响所有编程语言的东西?
如果你想处理这种“缓慢”,作为一名 Ruby 程序员,你有哪些选择?
哪个版本的 Ruby 最适合像 Stack Overflow 这样速度至关重要且流量密集的应用程序?
这些问题是主观的,我意识到架构设置(EC2 与独立服务器等)有很大的不同,但我想听听人们对 Ruby 速度慢的看法。
最后,我找不到太多关于 Ruby 2.0 的新闻——我认为我们距离那个还有好几年的时间?
为什么 Ruby 被认为很慢?
因为如果你在 Ruby 和其他语言之间运行典型的基准测试,Ruby 就会失败。
在编写实时数字信号处理应用程序或任何类型的实时控制系统时,Ruby 可能无法为您提供很好的服务。Ruby(带有今天的 VM)可能会在智能手机等资源受限的计算机上窒息。
请记住,您的 Web 应用程序上的许多处理实际上是由用 C 开发的软件完成的。例如 Apache、Thin、Nginx、SQLite、MySQL、PostgreSQL,许多解析库、RMagick、TCP/IP 等都是 Ruby 使用的 C 程序. Ruby 提供了粘合剂和业务逻辑。
切换到更快的语言。但这需要付出代价。这可能是值得的成本。但是对于大多数 Web 应用程序来说,语言选择并不是一个相关因素,因为没有足够的流量证明使用更快的语言是合理的,而开发成本更高。
其他人已经回答了这个问题 - JRuby、IronRuby、REE 将使您的应用程序的 Ruby 部分在能够负担 VM 的平台上运行得更快。而且由于导致缓慢的通常不是 Ruby,而是您的计算机系统架构和应用程序架构,您可以执行诸如数据库复制、多个应用程序服务器、使用反向代理的负载平衡、HTTP 缓存、memcache、Ajax、客户端缓存等.这些东西都不是Ruby。
大多数人都在等待 Ruby 1.9.1。我自己正在等待 JRuby 上的 Ruby 1.9.1 上的 Rails 3.1。
最后,请记住,许多开发人员选择 Ruby 是因为与其他语言相比,它使编程成为一种更愉快的体验,并且因为 Ruby 与 Rails 使熟练的 Web 开发人员能够非常快速地开发应用程序。