From: Paul Brannan Date: 2008-10-09T04:52:39+09:00 Subject: [ruby-core:19218] performance of C function calls in 1.8 vs 1.9 It seems it is more expensive to call a C function in 1.9 than it used to be in 1.8: [pbrannan@zem tmp]$ ruby test.rb user system total real Ruby method 7.170000 0.010000 7.180000 ( 7.177720) C function 3.950000 0.000000 3.950000 ( 3.953411) [pbrannan@zem tmp]$ ruby1.9 test.rb user system total real Ruby method 8.570000 0.000000 8.570000 ( 8.580137) C function 8.580000 0.000000 8.580000 ( 8.591668) [pbrannan@zem tmp]$ cat foo.c #include "ruby.h" VALUE foo(VALUE self) { return Qnil; } void Init_foo() { rb_define_global_function("foo", foo, 0); } [pbrannan@zem tmp]$ cat test.rb require 'foo' require 'benchmark' N = 10_000_000 def bar return nil end Benchmark.bm(20) { |x| x.report("Ruby method") { for i in 1..N do bar end } x.report("C function") { for i in 1..N do foo end } } Why is this? Paul