1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
require "narray"
T = (RUBY_VERSION<"1.8.0") ? Time : Process
ruby_narray = system( "ruby -r narray dummy.rb" )
python_numeric = system( "python dummy.py numeric" )
python_numarray = system( "python dummy.py numarray" )
python_numpy = system( "python dummy.py numpy" )
octave = system( "octave -qf dummy.m" )
def array_size
list = [
100000, 200000, 500000,
1000000, 2000000, 5000000,
10000000, 20000000, 50000000
]
mlist = [
150, 200, 300, 500, 700, 1000, 1500, 2000, 3000
#300, 400, 700, 1000, 1400, 2000, 3000, 4000, 7000
]
r = 50
n = nil
i = nil
list.each_with_index do |n,i|
a = NArray.float(n)
b = NArray.float(n)
t = bench_time(r) { c = a+b }
break if t>0.5
end
[n, mlist[i], r*2]
end
def bench_time(n)
t1 = T.times.utime
for i in 1..n
yield
end
t = T.times.utime - t1
puts " Time: %.2f sec\n" % [t]
t
end
n,m,r = array_size
puts "array size = #{n}, repeat = #{r}\n\n"
system "ruby bench.rb float mul #{n} #{r}" if ruby_narray
system "python bench.py numeric float mul #{n} #{r}" if python_numeric
system "python bench.py numarray float mul #{n} #{r}" if python_numarray
system "python bench.py numpy float mul #{n} #{r}" if python_numpy
system "octave -qf bench.m float mul #{n} #{r}" if octave
puts
system "ruby bench.rb int add #{n} #{r}" if ruby_narray
system "python bench.py numeric int add #{n} #{r}" if python_numeric
system "python bench.py numarray int add #{n} #{r}" if python_numarray
system "python bench.py numpy int add #{n} #{r}" if python_numpy
system "octave -qf bench.m int add #{n} #{r}" if octave
puts
system "ruby bench.rb complex mul #{n} #{r}" if ruby_narray
system "python bench.py numeric complex mul #{n} #{r}" if python_numeric
system "python bench.py numarray complex mul #{n} #{r}" if python_numarray
system "python bench.py numpy complex mul #{n} #{r}" if python_numpy
system "octave -qf bench.m complex mul #{n} #{r}" if octave
puts
system "ruby bench.rb float_cross mul #{m*2} #{r}" if ruby_narray
system "python bench.py numeric float_cross mul #{m*2} #{r}" if python_numeric
system "python bench.py numarray float_cross mul #{m*2} #{r}" if python_numarray
system "python bench.py numpy float_cross mul #{m*2} #{r}" if python_numpy
system "octave -qf bench.m float_cross matmul #{m*2} #{r}" if octave
puts
system "ruby bench.rb float_matrix mul #{m} 4" if ruby_narray
system "python bench.py numeric float_matrix matmul #{m} 4" if python_numeric
system "python bench.py numarray float_matrix matmul #{m} 4" if python_numarray
system "python bench.py numpy float_matrix matmul #{m} 4" if python_numpy
system "octave -qf bench.m float_matrix matmul #{m} 4" if octave
puts
system "ruby bench.rb float_solve solve #{m} 2" if ruby_narray
system "python bench.py numeric float_solve solve #{m} 2" if python_numeric
system "python bench.py numarray float_solve solve #{m} 2" if python_numarray
system "python bench.py numpy float_solve solve #{m} 2" if python_numpy
system "octave -qf bench.m float_solve solve #{m} 2" if octave
puts
exit
|