Module: BenchmarkInterface
- Defined in:
- lib/benchmark-interface/run.rb,
lib/benchmark-interface.rb,
lib/benchmark-interface/version.rb,
lib/benchmark-interface/benchmark.rb,
lib/benchmark-interface/backends/bips.rb,
lib/benchmark-interface/benchmark-set.rb,
lib/benchmark-interface/frontends/mri.rb,
lib/benchmark-interface/frontends/bips.rb,
lib/benchmark-interface/backends/simple.rb,
lib/benchmark-interface/frontends/perfer.rb,
lib/benchmark-interface/frontends/rbench.rb,
lib/benchmark-interface/backends/bench9000.rb,
lib/benchmark-interface/backends/benchmark.rb,
lib/benchmark-interface/frontends/benchmark.rb
Overview
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. This code is released under a tri EPL/GPL/LGPL license. You can use it, redistribute it and/or modify it under the terms of the:
Eclipse Public License version 1.0 GNU General Public License version 2 GNU Lesser General Public License version 2.1
Defined Under Namespace
Modules: Backends, Frontends Classes: Benchmark, BenchmarkContext, BenchmarkSet, BipsContext, PerferContext, RBenchContext
Constant Summary collapse
- NON_MRI_INDICATORS =
%w( Benchmark.measure Benchmark.realtime Benchmark.benchmark Benchmark.bm Benchmark.bmbm RBench.run Benchmark.ips Perfer.session harness_sample )
- VERSION =
'0.1'
Class Method Summary collapse
Class Method Details
.benchmark(name = nil, &block) ⇒ Object
22 23 24 |
# File 'lib/benchmark-interface.rb', line 22 def self.benchmark(name=nil, &block) BenchmarkInterface::BenchmarkSet.current.register name, block end |
.help ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/benchmark-interface/run.rb', line 90 def self.help puts "Benchmark-Interface #{VERSION}" puts puts 'benchmark benchmark-files.rb... [benchmark names...] [options]' puts puts 'Backends:' puts ' --simple' puts ' --bips (default)' puts ' --bm' puts ' --bmbm' puts ' --bench9000' puts puts 'Options:' puts ' --no-scale Don\'t scale benchmarks for backends that expects benchmarks to take about a second' puts ' --show-rewrite Show rewritten MRI benchmarks' puts ' --cache Cache MRI rewrites' puts ' --use-cache Use cached MRI rewrites' puts ' --time n Run for n seconds, if the backend supports that' exit 1 end |
.run(args) ⇒ Object
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 |
# File 'lib/benchmark-interface/run.rb', line 16 def self.run(args) set = BenchmarkInterface::BenchmarkSet.new backend = BenchmarkInterface::Backends::Bips names = [] = { '--no-scale' => false, '--use-cache' => false, '--show-rewrite' => false, '--cache' => false, '--time' => 10 } to_load = [] n = 0 while n < args.size arg = args[n] if arg.start_with? '-' case arg when '--help', '-h', '-help', '--version', '-v', '-version' help when '--simple' backend = BenchmarkInterface::Backends::Simple when '--bips' backend = BenchmarkInterface::Backends::Bips when '--bm' backend = BenchmarkInterface::Backends::Bm when '--bmbm' backend = BenchmarkInterface::Backends::BmBm when '--bench9000' backend = BenchmarkInterface::Backends::Bench9000 when '--time' [arg] = Integer(args[n + 1]) n += 1 else abort "unknown option #{arg}" unless .keys.include?(arg) [arg] = true end elsif arg.include?('.rb') to_load.push arg else names.push arg end n += 1 end to_load.each do |path| source = File.read(path) if NON_MRI_INDICATORS.any? { |t| source.include?(t) } || source =~ /benchmark.*\{/ || source =~ /benchmark.*do/ set.load_benchmarks path else set.load_mri_benchmarks path, end end set.prepare if set.benchmarks.empty? abort 'No benchmarks found!' end names.each do |name| unless set.benchmark(name) abort "Unknown benchmark #{name}" end end names = set.benchmarks.map(&:name) if names.empty? backend.run set, names, end |