一直使用官方网站下载的ruby 1.8.5二进制包,感觉在windows下速度一般,决定自己编译一下看有没有优化的空间
我的机器是Thinkpad T43,配置PM1.73G 内存1G win2003。以下过程的前提是安装了VC6.0,并且需要确保存在以下命名:nmake、cl、lib、dumpbin。更高版本的VC我没有试过。
1、下载最新的ruby源代码包
目前最新的源代码包是1.8.6p111(下载地址:
ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.gz),下载后解压到一个临时目录,假设为C:\temp\ruby-1.8.6-p111。
2、调整优化ruby源代码参数
注:此步骤是参考一些优化文章加入的,为试验性质,目前我还没有进行压力测试,无法证明其有效性,建议跳过
修改gc.c文件:
第60行:#define GC_MALLOC_LIMIT 8000000 (默认为200000)
第312行:#define HEAP_MIN_SLOTS 60000 (默认为10000)
第315行:#define FREE_MIN 40960 (默认为4096)
3、设置编译环境变量:
运行gem及rails需要ssl、zlib等扩展库支持,需要配置对应include及lib环境。
下载附件support.zip(
http://www.iteye.com/topics/download/361e3f7a-4903-4400-96d9-313d315f6889),把附件中文件的include及lib都解压到一个临时目录,假设分别为C:\temp\support\include及C:\temp\suport\lib。
打开命令行,执行:
C:\Program Files\Microsoft Visual Studio\VC98\Bin\vcvars32.bat
set INCLUDE=%INCLUDE%;C:\temp\support\include
set LIB=%LIB%;C:\temp\support\lib
不要关闭这个命令行窗口,以下编译过程将在此命令行窗口进行。
4、编译Ruby并安装到目标路径:
按ruby编译安装说明,依次执行以下命令:
cd \temp\ruby-1.8.6-p111
win32\configure.bat i686-mswin32
nmake
nmake rubyw.exe
nmake test
执行完成后,即已经生成ruby可执行文件,需要安装到目标路径,假设为C:\opt\ruby-1.8.6,执行以下命令:
nmake DESTDIR=C:\opt\ruby-1.8.6 install
执行完成后,把C:\opt\ruby-1.8.6\bin加入到PATH变量,即完成了ruby的编译安装。
5、安装gem
首先关闭掉之前编译的命令行,打开新的命令行窗口,执行以下命令确认已经在使用编译版本的ruby:
ruby -v
下载最新的gem(
http://rubyforge.org/frs/?group_id=126),目前为0.9.5。解压到一个临时目录,假设为C:\temp\rubygems-0.9.5。执行:
cd C:\temp\rubygems-0.9.5
ruby setup.rb
最后确认一下已经是使用了最新的gem:
gem -v
6、安装rails
安装rails就简单了,使用标准的gem安装,我目前项目文件中使用的是rails1.1.6和rails1.2.3,所以执行以下命令:
gem install rails -v 1.1.6
gem install rails -v 1.2.3
经测试,ruby运行速度及启动单元测试的速度无明显改善,但也提供了一种手工编译安装的参考方法吧。
有兴趣的同学可以使用Intel C++编译器或更高版本的VC编译器试一下。