Windows上的Rails非常慢(rails -v需要4秒)

时间:2011-01-07 16:41:30

标签: ruby-on-rails ruby windows windows-vista

我正在使用rails版本3.0.3和ruby版本1.9.2p136(2010-12-15)在Intel Core 2 Duo 2,6 Ghz上使用4 GB Ram和Windows Vista Business SP2而没有其他(重)应用运行。我已经读过Windows上的rails开发速度比Unices慢,大多数人都不推荐它,但这很愚蠢。

我想不出使用4秒显示简单版本号的任何好理由。并且rails生成需要最多10秒才能完成!

我的设置中的某些内容一定是错的(至少我希望如此)。

有人知道如何继续吗?提前谢谢!

5 个答案:

答案 0 :(得分:20)

有几个关键点组合在一起会产生你注意到的缓慢性能。

  • Ruby IO性能(在任何版本上)比Linux同类产品慢3倍。这是因为Ruby的Windows代码库中有几个未优化的跃点。这需要进一步的分析,调查和优化,直到今天才开始。
  • Ruby 1.9.2为每个文件生成了几个stat()个调用,这可能会增加Ruby本身的速度。这在Ruby 1.8.6或1.8.7中不存在。这也是在尚未发布的Ruby 1.9.3(主干)中解决的。
  • 像Rails这样的项目需要大约500个文件,结合上述几点使得Ruby for Windows成为了很多人看到的。

现在,有一些解决方法,一些简单和一些复杂的。

  1. 回到Ruby 1.8.7而不是Ruby 1.9.2。这将为您的应用程序带来一定的速度。除非您正在利用Unicode支持,否则1.8.7可能适合您。
  2. 查看Spork等工具,为您的RSpec / Cucumber
  3. 提供场景/分叉
  4. 使用像ImDisk这样的RAMDisk将开发移动到RAM。将Ruby和您的应用程序移动到它,加载时间将减少(这也与您的可用RAM相关)
  5. 希望其中一些选项对您有帮助。

答案 1 :(得分:7)

在Ubuntu虚拟机中使用Ruby比在Windows上直接使用它更快。

一个很好的选择是使用Vagrant:您在Windows IDE上开发,文件是"共享"使用Ubuntu VM,运行" vagrant ssh",然后运行" rails server",或者您想要运行的任何其他命令。还有其他好处:

  • 您不需要安装RVM或切换ruby版本,只需为每个项目使用VM。虚拟机可以很小,比如500MB的数据,使用高达100MB的RAM,但是YMMV
  • 您不必担心宝石与Windows的兼容性

看看:http://www.vagrantup.com/

答案 2 :(得分:-1)

很可能,这是影响它的反病毒。结合Vista的速度问题可能会影响它。我同意Justice,在VM中运行Linux。

答案 3 :(得分:-1)

对于加速,您可以尝试我的装载机调速器上部(帮助导轨在Windows中运行得更快):https://github.com/rdp/faster_require

另外checkout spork,在Windows中运行,jruby也运行良好。

答案 4 :(得分:-1)

你可以尝试使用ruby的垃圾收集器来更快地制作ruby,因为默认的变量设置与windows的工作方式不匹配

Garbage collector performance tuning