Issue #5985 has been updated by Eric Wong.


 ko1 / atdot.net wrote:
 > 
 > > +BENCHRUBY = ./$(STATIC_RUBY) -I$(srcdir)/lib -I. -I$(EXTOUT)/common $(RUN_OPT
 
 > We need to discuss which version we want to compare. static_ruby and
 > dynamic (using libruby) ruby show different performance (basically,
 > dynamic ruby is slower).
 > 
 > To avoid such difference, recently I use benchmark/driver.rb directly
 > to compare installed rubies.  To do so, I install non-modified trunk
 > and modified trunk before benchmark.
 >
 > What should happen on "make benchmark"?  This rule I wrote is to
 > compare installed "ruby 1.8" and built miniruby. it is not fair
 > comparison but it is enough to check the rough performance.
 
 I can count 3 options right now for "make benchmark":
 
 a) "make benchmark" becomes a help message to tell people
     to only benchmark with installed Rubies.
 
 b) use LD_PRELOAD for shared Rubies (not portable?)
 
 c) ignore dynamic for benchmark, it will always
    be slower than static (neither is nearly as fast as miniruby)
 
 I think c) is the easiest path right now, static-ruby is closer to
 dynamic ruby.  miniruby is too far different and unrealistic.
 
 In all cases, we should probably add a warning if any benchmarked
 ruby is dynamic.

----------------------------------------
Bug #5985: miniruby skews "make benchmark" results
https://bugs.ruby-lang.org/issues/5985#change-44857

* Author: Eric Wong
* Status: Closed
* Priority: Low
* Assignee: Koichi Sasada
* Category: build
* Target version: 2.0.0
* ruby -v: -
* Backport: 
----------------------------------------
miniruby has fewer objects and a smaller heap than the normal "ruby",
benchmarks that are affected by GC performance is skewed heavily.
This is most noticeable with the vm3_gc benchmark using the same
Ruby revision/build but different executables (miniruby vs ruby):

$ make
$ make install
$ make benchmark-each ITEM=vm3_gc
ruby ../benchmark/driver.rb -v \
	            --executables="ruby; ./miniruby -I../lib -I. -I.ext/common  ../tool/runruby.rb --extout=.ext  -- --disable-gems" \
	            --pattern=vm3_gc --directory=../benchmark 
total: 1 trial(s) (1 trial(s) for 1 benchmark(s))
2012-02-08 18:57:12 +0000
target 0: ruby 2.0.0dev (2012-02-08 trunk 34493) [x86_64-linux]
target 1: ruby 2.0.0dev (2012-02-08 trunk 34493) [x86_64-linux]

-----------------------------------------------------------
vm3_gc

#! /usr/bin/ruby
5000.times do
  100.times do
    {"xxxx"=>"yyyy"}
  end
  GC.start
end

ruby 2.0.0dev (2012-02-08 trunk 34493) [x86_64-linux]	.2.752270221710205
ruby 2.0.0dev (2012-02-08 trunk 34493) [x86_64-linux]	.1.857623815536499

-----------------------------------------------------------
raw data:

[["vm3_gc", [[2.752270221710205], [1.857623815536499]]]]

Elapesed time: 4.611220872 (sec)
-----------------------------------------------------------
benchmark results:
name	ruby 2.0.0dev (2012-02-08 trunk 34493) [x86_64-linux]	ruby 2.0.0dev (2012-02-08 trunk 34493) [x86_64-linux]	average difference
vm3_gc	2.752	1.858	-0.895
-----------------------------------------------------------
average total difference is -0.894646406173706




-- 
http://bugs.ruby-lang.org/