Ok, call paths are wired up (0-3,N arity w and w/o block) and I'm
getting a crash running a short benchmark that exercises all the call
paths. It is attached, as is the hs_err file.
I'll try to narrow it down further and work around it for now.
Run it like this:
JAVA_HOME=../davinci/sources/build/bsd-i586/j2sdk-image/ jruby -J-Xint
-J-XX:+EnableInvokeDynamic -J-Djruby.compile.invokedynamic=true
bench_method_dispatch.rb
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGBUS (0xa) at pc=0x0118841b, pid=88079, tid=2954375168
#
# JRE version: 7.0
# Java VM: OpenJDK Client VM (16.0-b03 interpreted mode bsd-x86 )
# Problematic frame:
# V [libjvm.dylib+0x18841b]
#
# An error report file with more information is saved as:
# /Users/headius/projects/jruby/hs_err_pid88079.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Abort trap
- Charlie
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGBUS (0xa) at pc=0x0118841b, pid=88079, tid=2954375168
#
# JRE version: 7.0
# Java VM: OpenJDK Client VM (16.0-b03 interpreted mode bsd-x86 )
# Problematic frame:
# V [libjvm.dylib+0x18841b]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x00822000): VMThread [stack: 0xb0103000,0xb0183000]
[id=-1340592128]
siginfo:si_signo=SIGBUS: si_errno=0, si_code=2 (BUS_ADRERR), si_addr=0x0000000c
Registers:
EAX=0x00000000, EBX=0x01188406, ECX=0x00000008, EDX=0xb0182680
ESP=0xb0182470, EBP=0xb01824b8, ESI=0x06314af4, EDI=0x230d890c
EIP=0x0118841b, EFLAGS=0x00010282
Top of Stack: (sp=0xb0182470)
0xb0182470: 00104580 03abc1d0 00000008 00106a60
0xb0182480: 00106a60 03abbff0 00000001 00000001
0xb0182490: 014bf388 03b1fda8 00106a60 0000000a
0xb01824a0: 06313958 01188406 b01824d0 011fa106
0xb01824b0: 06314af4 230d890c b0182518 011fa22f
0xb01824c0: 06313b98 06313c84 b0182518 011fa22f
0xb01824d0: 00106a60 03b1fda8 00000000 00000000
0xb01824e0: 00106a60 03abc1d0 00000001 b0182680
Instructions: (pc=0x0118841b)
0x0118840b: 01 8b 49 04 89 4d dc 89 45 e0 8b 41 04 8d 48 08
0x0118841b: 8b 51 04 89 d6 c1 fe 02 83 fa 00 89 75 e4 0f 8e
Stack: [0xb0103000,0xb0183000], sp=0xb0182470, free space=1fdb0181e60k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.dylib+0x18841b]
V [libjvm.dylib+0x1fa22f]
V [libjvm.dylib+0x3cbf06]
V [libjvm.dylib+0x1dd62d]
V [libjvm.dylib+0x1cfde5]
V [libjvm.dylib+0x186945]
V [libjvm.dylib+0x188030]
V [libjvm.dylib+0x1d0fd6]
V [libjvm.dylib+0x13e143]
V [libjvm.dylib+0x1ceca5]
V [libjvm.dylib+0x45e56b]
V [libjvm.dylib+0x462dc5]
V [libjvm.dylib+0x46149d]
V [libjvm.dylib+0x46210c]
V [libjvm.dylib+0x4623fc]
V [libjvm.dylib+0x36b5f5]
C [libSystem.B.dylib+0x32155] _pthread_start+0x141
C [libSystem.B.dylib+0x32012] thread_start+0x22
VM_Operation (0xb00ff79c): GenCollectForAllocation, mode: safepoint, requested
by thread 0x00800800
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x00839400 JavaThread "Low Memory Detector" daemon [_thread_blocked,
id=-1335832576, stack(0xb050d000,0xb060d000)]
0x00838000 JavaThread "CompilerThread0" daemon [_thread_blocked,
id=-1336889344, stack(0xb048b000,0xb050b000)]
0x00835000 JavaThread "Signal Dispatcher" daemon [_thread_blocked,
id=-1337421824, stack(0xb0389000,0xb0489000)]
0x00827c00 JavaThread "Finalizer" daemon [_thread_blocked, id=-1338478592,
stack(0xb0287000,0xb0387000)]
0x00823c00 JavaThread "Reference Handler" daemon [_thread_blocked,
id=-1339535360, stack(0xb0185000,0xb0285000)]
0x00800800 JavaThread "main" [_thread_blocked, id=-1341124608,
stack(0xb0001000,0xb0101000)]
Other Threads:
=>0x00822000 VMThread [stack: 0xb0103000,0xb0183000] [id=-1340592128]
0x0083a400 WatcherThread [stack: 0xb060f000,0xb068f000] [id=-1335300096]
VM state:at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x001030d0] Threads_lock - owner thread: 0x00822000
[0x00103490] Heap_lock - owner thread: 0x00800800
Heap
def new generation total 960K, used 959K [0x03a40000, 0x03b40000, 0x060b0000)
eden space 896K, 99% used [0x03a40000, 0x03b1fff0, 0x03b20000)
from space 64K, 100% used [0x03b20000, 0x03b30000, 0x03b30000)
to space 64K, 100% used [0x03b30000, 0x03b40000, 0x03b40000)
tenured generation total 4096K, used 2450K [0x060b0000, 0x064b0000,
0x22e40000)
the space 4096K, 59% used [0x060b0000, 0x06314bf8, 0x06314c00, 0x064b0000)
compacting perm gen total 12800K, used 12731K [0x22e40000, 0x23ac0000,
0x26e40000)
the space 12800K, 99% used [0x22e40000, 0x23aaefe8, 0x23aaf000, 0x23ac0000)
No shared spaces configured.
Dynamic libraries:
0x00000000 /usr/lib/libgcc_s.1.dylib
0x00000000 /usr/lib/libSystem.B.dylib
0x00000000 /usr/lib/system/libmathCommon.A.dylib
0x01000000
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/client/libjvm.dylib
0x00000000 /usr/lib/libstdc++.6.dylib
0x0001d000
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libverify.dylib
0x0002b000
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libjava.dylib
0x00052000
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/native_threads/libhpi.dylib
0x00065000
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libzip.dylib
0x00728000
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libnet.dylib
0x0073c000
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libmanagement.dylib
0x00745000
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libnio.dylib
VM Arguments:
jvm_args: -Djruby.memory.max=500m -Djruby.stack.max=1024k -Xmx500m -Xss1024k
-Djna.boot.library.path=/Users/headius/projects/jruby/lib/native/darwin
-Djffi.boot.library.path=/Users/headius/projects/jruby/lib/native/*Darwin
-Dfile.encoding=UTF-8 -Xint -XX:+EnableInvokeDynamic
-Djruby.compile.invokedynamic=true -Dfile.encoding=UTF-8
-Xbootclasspath/a:/Users/headius/projects/jruby/lib/jruby.jar:/Users/headius/projects/jruby/lib/bsf.jar
-Djruby.home=/Users/headius/projects/jruby
-Djruby.lib=/Users/headius/projects/jruby/lib -Djruby.script=jruby
-Djruby.shell=/bin/sh
java_command: org.jruby.Main bench_method_dispatch.rb
Launcher Type: SUN_STANDARD
Environment Variables:
JAVA_HOME=../davinci/sources/build/bsd-i586/j2sdk-image/
PATH=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin:/Users/headius/projects/jruby/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/opt/local/sbin
SHELL=/bin/bash
DISPLAY=/tmp/launch-nNh4JU/:0
DYLD_FALLBACK_LIBRARY_PATH=/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/client:/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386:/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/../lib/i386
Signal Handlers:
SIGSEGV: [libjvm.dylib+0x45deb0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGBUS: [libjvm.dylib+0x45deb0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGFPE: [libjvm.dylib+0x367780], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGPIPE: [libjvm.dylib+0x367780], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGXFSZ: [libjvm.dylib+0x367780], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGILL: [libjvm.dylib+0x367780], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGUSR1: SIG_DFL, sa_mask[0]=0x63807efb, sa_flags=0x00000000
SIGUSR2: [libjvm.dylib+0x368970], sa_mask[0]=0x00000000, sa_flags=0x00000042
SIGHUP: [libjvm.dylib+0x369f70], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGINT: [libjvm.dylib+0x369f70], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGTERM: [libjvm.dylib+0x369f70], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGQUIT: [libjvm.dylib+0x369f70], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
--------------- S Y S T E M ---------------
OS:Bsd
uname:Darwin 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009;
root:xnu-1228.12.14~1/RELEASE_I386 i386
rlimit: STACK 8192k, CORE 0k, NPROC 266, NOFILE 10240
CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 23 stepping
10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1
Memory: 4k page, physical 1443480k(360870k free)
vm_info: OpenJDK Client VM (16.0-b03) for bsd-x86 JRE
(1.7.0-internal-headius_2009_05_27_04_45-b00), built on May 27 2009 10:30:25 by
"headius" with gcc 4.0.1 (Apple Inc. build 5490)
time: Wed May 27 12:02:57 2009
elapsed time: 1 seconds
require 'benchmark'
def bench_method_dispatch(bm)
bm.report "control: 10m local var access" do
a = 5;
i = 0;
while i < 1000
a; a; a; a; a; a; a; a; a; a;
a; a; a; a; a; a; a; a; a; a;
a; a; a; a; a; a; a; a; a; a;
a; a; a; a; a; a; a; a; a; a;
a; a; a; a; a; a; a; a; a; a;
a; a; a; a; a; a; a; a; a; a;
a; a; a; a; a; a; a; a; a; a;
a; a; a; a; a; a; a; a; a; a;
a; a; a; a; a; a; a; a; a; a;
a; a; a; a; a; a; a; a; a; a;
i += 1;
end
end
bm.report "core: 10m Fixnum#to_i" do
a = 5;
i = 0;
while i < 1000
a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i;
a.to_i;
a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i;
a.to_i;
a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i;
a.to_i;
a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i;
a.to_i;
a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i;
a.to_i;
a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i;
a.to_i;
a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i;
a.to_i;
a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i;
a.to_i;
a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i;
a.to_i;
a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i;
a.to_i;
i += 1;
end
end
oldbm = $bm
$bm = bm
def foo
self
end
def foo1(arg)
self
end
def foo2(arg, arg2)
self
end
def foo3(arg, arg2, arg3)
self
end
def foo4(arg, arg2, arg3, arg4)
self
end
def foos(*args)
self
end
class << self
define_method(:bar) { }
end
class << self
define_method(:bar1) {|a| }
end
class << self
define_method(:bar2) {|a,b| }
end
class << self
define_method(:bars) {|*a| }
end
def optfix(opts = 1)
self
end
def optary(opts = [])
self
end
def opthash(opts = { })
self
end
def quux(&block)
self
end
$bm.report "ruby: 10m def foo() with foo()" do
a = [];
i = 0;
while i < 1000
foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
i += 1;
end
end
$bm.report "ruby: 10m def foo(*a) with foo()" do
a = [];
i = 0;
while i < 1000
foos; foos; foos; foos; foos; foos; foos; foos; foos; foos;
foos; foos; foos; foos; foos; foos; foos; foos; foos; foos;
foos; foos; foos; foos; foos; foos; foos; foos; foos; foos;
foos; foos; foos; foos; foos; foos; foos; foos; foos; foos;
foos; foos; foos; foos; foos; foos; foos; foos; foos; foos;
foos; foos; foos; foos; foos; foos; foos; foos; foos; foos;
foos; foos; foos; foos; foos; foos; foos; foos; foos; foos;
foos; foos; foos; foos; foos; foos; foos; foos; foos; foos;
foos; foos; foos; foos; foos; foos; foos; foos; foos; foos;
foos; foos; foos; foos; foos; foos; foos; foos; foos; foos;
i += 1;
end
end
$bm.report "ruby: 10m def foo(*a) with foo(nil)" do
a = [];
i = 0;
while i < 1000
foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil);
foos(nil); foos(nil); foos(nil); foos(nil);
i += 1;
end
end
$bm.report "ruby: 10m def foo(*a) with foo(nil*4)" do
a = [];
i = 0;
while i < 1000
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil,
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil);
i += 1;
end
end
$bm.report "ruby: 10m def foo(a)" do
a = [];
i = 0;
while i < 1000
foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil);
foo1(nil); foo1(nil); foo1(nil); foo1(nil);
i += 1;
end
end
$bm.report "ruby: 10m def foo(a,b)" do
a = [];
i = 0;
while i < 1000
foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil);
foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil);
foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil);
foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil);
foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil);
foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil);
foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil);
foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil);
foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil);
foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil,
nil);
i += 1;
end
end
$bm.report "ruby: 10m def foo(a,b,c)" do
a = [];
i = 0;
while i < 1000
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil,
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil,
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil,
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil,
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil,
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil,
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil,
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil,
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil,
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil,
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil);
i += 1;
end
end
$bm.report "ruby: 10m def foo(a,b,c,d)" do
a = [];
i = 0;
while i < 1000
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil,
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil);
i += 1;
end
end
$bm.report "ruby: 10m def foo() with __send__" do
a = [];
i = 0;
while i < 1000
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo);
__send__(:foo);
i += 1;
end
end
$bm.report "ruby: 10m def opt(a=1) with opt()" do
a = [];
i = 0;
while i < 1000
optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix;
optfix;
optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix;
optfix;
optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix;
optfix;
optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix;
optfix;
optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix;
optfix;
optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix;
optfix;
optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix;
optfix;
optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix;
optfix;
optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix;
optfix;
optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix;
optfix;
i += 1;
end
end
$bm.report "ruby: 10m def opt(a=1) with opt(nil)" do
a = [];
i = 0;
while i < 1000
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
i += 1;
end
end
$bm.report "ruby: 10m def opt(a=[]) with opt()" do
a = [];
i = 0;
while i < 1000
optary; optary; optary; optary; optary; optary; optary; optary; optary;
optary;
optary; optary; optary; optary; optary; optary; optary; optary; optary;
optary;
optary; optary; optary; optary; optary; optary; optary; optary; optary;
optary;
optary; optary; optary; optary; optary; optary; optary; optary; optary;
optary;
optary; optary; optary; optary; optary; optary; optary; optary; optary;
optary;
optary; optary; optary; optary; optary; optary; optary; optary; optary;
optary;
optary; optary; optary; optary; optary; optary; optary; optary; optary;
optary;
optary; optary; optary; optary; optary; optary; optary; optary; optary;
optary;
optary; optary; optary; optary; optary; optary; optary; optary; optary;
optary;
optary; optary; optary; optary; optary; optary; optary; optary; optary;
optary;
i += 1;
end
end
$bm.report "ruby: 10m def opt(a=[]) with opt(nil)" do
a = [];
i = 0;
while i < 1000
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
i += 1;
end
end
$bm.report "ruby: 10m def opt(a={}) with opt()" do
a = [];
i = 0;
while i < 1000
opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash;
opthash; opthash;
opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash;
opthash; opthash;
opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash;
opthash; opthash;
opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash;
opthash; opthash;
opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash;
opthash; opthash;
opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash;
opthash; opthash;
opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash;
opthash; opthash;
opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash;
opthash; opthash;
opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash;
opthash; opthash;
opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash;
opthash; opthash;
i += 1;
end
end
$bm.report "ruby: 10m def opt(a={}) with opt(nil)" do
a = [];
i = 0;
while i < 1000
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
i += 1;
end
end
$bm.report "ruby: 10m def quux(&b) with quux()" do
a = [];
i = 0;
while i < 1000
quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
i += 1;
end
end
$bm.report "ruby: 10m def quux(&b) with quux(){}" do
a = [];
i = 0;
while i < 10_000
quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{};
quux{};
quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{};
quux{};
quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{};
quux{};
quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{};
quux{};
quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{};
quux{};
quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{};
quux{};
quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{};
quux{};
quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{};
quux{};
quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{};
quux{};
quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{};
quux{};
i += 1;
end
end
$bm.report "ruby: 10m define_method :bar {}" do
a = 0
while a < 1000
bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
a += 1
end
end
$bm.report "ruby: 10m define_method :bar {|a|}" do
a = 0
while a < 1000
bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1);
bar1(1); bar1(1)
bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1);
bar1(1); bar1(1)
bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1);
bar1(1); bar1(1)
bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1);
bar1(1); bar1(1)
bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1);
bar1(1); bar1(1)
bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1);
bar1(1); bar1(1)
bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1);
bar1(1); bar1(1)
bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1);
bar1(1); bar1(1)
bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1);
bar1(1); bar1(1)
bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1);
bar1(1); bar1(1)
a += 1
end
end
$bm.report "ruby: 10m define_method :bar {|a,b|}" do
a = 0
while a < 1000
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2);
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2);
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2);
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2);
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2);
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2);
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2);
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2);
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2);
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2);
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
a += 1
end
end
$bm.report "ruby: 10m define_method :bar {|*a|}" do
a = 0
while a < 1000
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3);
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3);
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3);
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3);
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3);
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3);
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3);
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3);
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3);
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3);
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
a += 1
end
end
$bm = oldbm
end
if $0 == __FILE__
(ARGV[0] || 10).to_i.times { Benchmark.bm(40) {|bm|
bench_method_dispatch(bm)} }
end
_______________________________________________
mlvm-dev mailing list
[email protected]
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev