Fix for JRUBY-2882. Handle error messages related to constructors better
[jruby.git] / bench / ffi / bench_chmod.rb
blobf7f24e9f72d9f8420cd6576c4b6cf3d2292536fe
1 require 'benchmark'
2 require 'ffi'
3 require 'ffi/platform'
5 iter = 100_000
6 file = "README"
8 module BasePosix
9   def chmod(mode, path)
10     if _chmod(path, mode) != 0
11     end
12   end
14 end
15 module Chmod
16   if JRuby::FFI::Platform::IS_WINDOWS
17     attach_function :_chmod, :_chmod, [ :string, :int ], :int
18   else
19     attach_function :chmod, :_chmod, [ :string, :int ], :int
20   end
21 end
22 module RbxPosix
23   extend FFI::Library
24   extend BasePosix
25   extend Chmod
26 end
27 module JPosix
28   extend JRuby::FFI::Library
29   extend BasePosix
30   extend Chmod
31 end
33 puts "Benchmark FFI chmod (rubinius api) performance, #{iter}x changing mode"
34 10.times {
35   puts Benchmark.measure {
36     iter.times { RbxPosix.chmod(0622, file) }
37   }
39 puts "Benchmark FFI chmod (jruby api) performance, #{iter}x changing mode"
40 10.times {
41   puts Benchmark.measure {
42     iter.times { JPosix.chmod(0622, file) }
43   }
46 puts "Benchmark JRuby File.chmod performance, #{iter}x changing mode"
47 10.times {
48   puts Benchmark.measure {
49     iter.times { File.chmod(0622, file) }
50   }