Commit f1164487 authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge branch 'master' of github.com:mruby/mruby

parents bdb9d4d1 ed3a2533
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
*.bak *.bak
*.d *.d
*.o *.o
/benchmark/**/*.dat
/benchmark/*.pdf
/benchmark/*.png
*.orig *.orig
*.pdb *.pdb
*.rej *.rej
......
...@@ -29,6 +29,8 @@ load "#{MRUBY_ROOT}/tasks/libmruby.rake" ...@@ -29,6 +29,8 @@ load "#{MRUBY_ROOT}/tasks/libmruby.rake"
load "#{MRUBY_ROOT}/tasks/mrbgems_test.rake" load "#{MRUBY_ROOT}/tasks/mrbgems_test.rake"
load "#{MRUBY_ROOT}/test/mrbtest.rake" load "#{MRUBY_ROOT}/test/mrbtest.rake"
load "#{MRUBY_ROOT}/tasks/benchmark.rake"
############################## ##############################
# generic build targets, rules # generic build targets, rules
task :default => :all task :default => :all
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
# mruby version by Hideki Miura # mruby version by Hideki Miura
# #
IMAGE_WIDTH = 256 IMAGE_WIDTH = 64
IMAGE_HEIGHT = 256 IMAGE_HEIGHT = 64
NSUBSAMPLES = 2 NSUBSAMPLES = 2
NAO_SAMPLES = 8 NAO_SAMPLES = 8
......
# Fib 39
def fib n def fib n
return n if n < 2 return n if n < 2
fib(n-2) + fib(n-1) fib(n-2) + fib(n-1)
end end
puts fib(39) puts fib(37)
...@@ -40,7 +40,7 @@ end ...@@ -40,7 +40,7 @@ end
i = 0 i = 0
while i<NUM while i<NUM
i+=1 i += 1
result = test_lists() result = test_lists()
end end
......
MRuby::Build.new do |conf|
toolchain :gcc
end
MRuby::Build.new('no_boxing') do |conf|
toolchain :gcc
conf.gembox 'default'
end
MRuby::Build.new('word_boxing') do |conf|
toolchain :gcc
conf.gembox 'default'
conf.compilers.each do |c|
c.defines += %w(MRB_WORD_BOXING)
end
end
MRuby::Build.new('nan_boxing') do |conf|
toolchain :gcc
conf.gembox 'default'
conf.compilers.each do |c|
c.defines += %w(MRB_NAN_BOXING)
end
end
MRuby::Build.new do |conf|
toolchain :gcc
end
MRuby::Build.new('gcc') do |conf|
toolchain :gcc
conf.gembox 'default'
end
MRuby::Build.new('clang') do |conf|
toolchain :clang
conf.gembox 'default'
end
set yrange [0:]
set terminal pngcairo font 'Sans, 8' lw 1 size 1400,1024
set xtics rotate by -45
set style histogram errorbars gap 2 lw 1
set style fill solid border -1
module MRuby
BENCHMARK_REPEAT = 4
end
$dat_files = []
def bm_files
Dir.glob("#{MRUBY_ROOT}/benchmark/bm_*.rb")
end
def build_config_name
if ENV['MRUBY_CONFIG']
File.basename(ENV['MRUBY_CONFIG'], '.rb').gsub('build_config_', '')
else
"build"
end
end
def plot_file
File.join(MRUBY_ROOT, 'benchmark', "#{build_config_name}.png")
end
def plot
opts_file = "#{MRUBY_ROOT}/benchmark/plot.gpl"
opts = File.read(opts_file).each_line.to_a.map(&:strip).join(';')
dat_files = $dat_files.group_by {|f| File.dirname(f).split(File::SEPARATOR)[-1]}
opts += ";set output '#{plot_file}'"
opts += ';plot '
opts += dat_files.keys.map do |data_file|
%Q['-' u 2:3:4:xtic(1) w hist title columnheader(1)]
end.join(',')
opts += ';'
cmd = %Q{gnuplot -p -e "#{opts}"}
IO.popen(cmd, 'w') do |p|
dat_files.each do |target_name, bm_files|
p.puts target_name.gsub('_', '-')
bm_files.each do |bm_file|
p.write File.read(bm_file)
end
p.puts "e"
end
end
end
MRuby.each_target do |target|
next if target.name == 'host'
mruby_bin = "#{target.build_dir}/bin/mruby"
bm_files.each do |bm_file|
bm_name = File.basename bm_file, ".rb"
dat_dir = File.join('benchmark', build_config_name, target.name)
dat_file = File.join(dat_dir, "#{bm_name}.dat")
$dat_files << dat_file
directory dat_dir
file dat_file => [bm_file, dat_dir, mruby_bin] do |task|
print bm_name
puts "..."
data = (0...MRuby::BENCHMARK_REPEAT).map do |n|
str = %x{(time -f "%e %S %U" #{mruby_bin} #{bm_file}) 2>&1 >/dev/null}
str.split(' ').map(&:to_f)
end
File.open(task.name, "w") do |f|
data = data.map {|_,r,s| (r + s) / 2.0}
min = data.min
max = data.max
avg = data.inject(&:+) / data.size
f.puts "#{bm_name.gsub('_', '-')} #{avg} #{min} #{max}"
end
end
end
end
file plot_file => $dat_files do
plot
end
task :benchmark => plot_file do
plot
end
...@@ -8,6 +8,7 @@ module MRuby ...@@ -8,6 +8,7 @@ module MRuby
end end
def each_target(&block) def each_target(&block)
return to_enum(:each_target) if block.nil?
@targets.each do |key, target| @targets.each do |key, target|
target.instance_eval(&block) target.instance_eval(&block)
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment