Fix for JRUBY-2882. Handle error messages related to constructors better
[jruby.git] / bench / ffi / bench_memchr.rb
blob46821e2cf191d765c4a8f012aefd59916b274816
1 require 'benchmark'
2 require 'ffi'
3 require 'java'
4 iter = 10000
5 str = "test" * 1000
6 module JLibC
7   extend JRuby::FFI::Library
8   attach_function :memchr, [ :string, :char, :int ], :pointer
9 end
11 module RbxLibC
12   extend FFI::Library
13   attach_function :memchr, [ :string, :char, :int ], :pointer
14 end
16 if JLibC.memchr("test", 't', 4).nil?
17   raise ArgumentError, "JRuby::FFI.memchr returned incorrect value"
18 end
19 if RbxLibC.memchr("test", 't', 4).nil?
20   raise ArgumentError, "FFI.memchr returned incorrect value"
21 end
22 puts "Benchmark FFI memchr(3) (rubinius api) performance, #{iter}x"
23 10.times {
24   puts Benchmark.measure {
25     iter.times { RbxLibC.memchr(str, 't', 4) }
26   }
28 puts "Benchmark FFI memchr(3) (jruby api) performance, #{iter}x"
29 10.times {
30   puts Benchmark.measure {
31     iter.times { JLibC.memchr(str, 't', 4) }
32   }