昨晚作SVN例行更新时发现了这次变动。今天有空,作了个尝试:
一、Win32平台下安装
configure
nmake(需要用到Bison,我用的是Cygwin带的)
nmake install-nodoc
默认会安装在当前盘符根目录下的/usr文件夹
ruby 2.0.0 (Base: Ruby 1.9.0 2006-11-01) [i386-mswin32]
YARVCore 0.4.1 Rev: 572 (2006-11-04) [opts: [inline method cache] ]
如果现在运行程序,还是会报错,说ubygem未找到。需要将lib/ruby/site_ruby/1.8下的rubygems.rb, ubygems.rb以及rubygems, rbconfig这两个文件夹copy到usr/lib/ruby/site_ruby/2.0下;而且现在还未安装扩展库,还得将yarv-svn/ win32/.ext目录下的内容Copy到usr/lib/ruby/2.0下。就OK了。
二、Untuntu平台下安装
一开始编译时出错如下:
gcc -g -O2 -DRUBY_EXPORT -I. -I. -c eval_proc.c
eval_proc.c:14: 错误: 对 ‘rb_cUnboundMethod’ 的静态声明出现在非静态声明之后
ruby.h:725: 错误: ‘rb_cUnboundMethod’ 的上一个声明在此
eval_proc.c:15: 错误: 对 ‘rb_cMethod’ 的静态声明出现在非静态声明之后
ruby.h:710: 错误: ‘rb_cMethod’ 的上一个声明在此
make: *** [eval_proc.o] 错误 1
注释掉ruby.h三行多余的声明后(line:699,710,725),在Ubuntu下编译通过。
步骤总结:
./configure --program-suffix=-yarv
make
make install-nodoc
(其余步骤与Win32下的类似)
ruby 2.0.0 (Base: Ruby 1.9.0 2006-11-01) [i686-linux]
YARVCore 0.4.1 Rev: 572 (2006-11-04) [opts: [direct threaded code] [inline method cache] ]
三、跨平台对比测试:
这是那个词频统计程序的分值对比(U代表Ubuntu,C代表Cygwin,W代表Win32;/后是内存占用情况;括号中为上次的得分):
UB:3.73s(4.11s)/2.2M(3.2M)
CA:3.16s(3.84s)/68M(95M)
CB:5.31s(6.04s)/5M(5M)
WA:4.98s/69M
WB:7.59s/5M
效能提升还是蛮显著地。令人惊讶的是WB方案中YARV的分值竟然比普通的Ruby184-win32还低。Ruby系列对Win32有偏见呀。