[Ruby 1.9 - Bug #4341][Closed] baserubyに1.8.xを指定すると make benchmark がエラー

Issue #4341 has been updated by Yui NARUSE.

Status changed from Assigned to Closed

This seems resolved.

Bug #4341: baserubyに1.8.xを指定すると make benchmark がエラー

Author: Motohiro KOSAKI
Status: Closed
Priority: Normal
Assignee: Koichi Sasada
Category:
Target version:
ruby -v: ruby 1.9.3dev (2011-01-28 trunk 30708) [x86_64-linux]

=begin
trunkをビルドするとき、baserubyを指定する必要があるのですが、多くの人はruby-1.8.xを
指定していると思います(それが推奨と以前聞きました)。

しかしながら、make benchmarkがbaseruby指定時にbaserubyとビルドしたrubyとの性能比較モードで
動作するため以下のエラーが出ます。


benchmark results:
name ruby 1.8.6 (2010-02-05) [x86_64-linux] ruby 1.9.3dev
(2011-01-29 trunk 30718) [x86_64-linux]
app_answer 1.176 0.227
app_erb 1.881 0.972
./benchmark/driver.rb:208:in measure': Benchmark process exited with abnormal status (256) (RuntimeError) from ./benchmark/driver.rb:192:in measure_file’
from ./benchmark/driver.rb:20:in map' from ./benchmark/driver.rb:188:in each’
from ./benchmark/driver.rb:188:in map' from ./benchmark/driver.rb:188:in measure_file’
from ./benchmark/driver.rb:187:in map' from ./benchmark/driver.rb:187:in measure_file’
from ./benchmark/driver.rb:162:in run' from ./benchmark/driver.rb:20:in each_with_index’
from ./benchmark/driver.rb:160:in each' from ./benchmark/driver.rb:160:in each_with_index’
from ./benchmark/driver.rb:160:in run' from ./benchmark/driver.rb:26:in benchmark’
from ./benchmark/driver.rb:249
make: *** [benchmark] Error 1

「Benchmark process exited」と言われてもまったく分からんのですが、
エスパー能力により以下のスクリプトが stack level too deep で異常終了
するのが原因と分かりました。

benchmark/bm_app_factorial.rb

def fact(n)
if(n > 1)
n * fact(n-1)
else
1
end
end

8.times{
fact(5000)
}

  1. benchmarkディレクトリに1.8.xで動作するスクリプトしか置かない
  2. make benchmark のデフォルト動作を変え、baserubyは無視する

の二案あるのですが (2) が現実的だと思います。
=end