viiite 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +70 -0
- data/Gemfile +2 -9
- data/Gemfile.lock +11 -32
- data/README.md +42 -123
- data/examples/bench_attr_vs_method-1.8.7.jpeg +0 -0
- data/examples/bench_attr_vs_method-1.9.3.jpeg +0 -0
- data/examples/bench_attr_vs_method.rb +18 -0
- data/examples/bench_iteration.rb +2 -4
- data/examples/bench_sort.rb +2 -7
- data/lib/viiite.rb +40 -18
- data/lib/viiite/bdb.rb +28 -0
- data/lib/viiite/bdb/cached.rb +63 -0
- data/lib/viiite/bdb/immediate.rb +46 -0
- data/lib/viiite/bdb/utils.rb +16 -0
- data/lib/viiite/benchmark.rb +35 -0
- data/lib/viiite/benchmark/runner.rb +50 -0
- data/lib/viiite/command.rb +33 -2
- data/lib/viiite/command/commons.rb +22 -0
- data/lib/viiite/command/help.rb +4 -5
- data/lib/viiite/command/plot.rb +44 -44
- data/lib/viiite/command/plot/to_gnuplot.rb +65 -0
- data/lib/viiite/command/{graph_style.rash → plot/to_gnuplot_graph.rash} +0 -0
- data/lib/viiite/command/{serie_style.rash → plot/to_gnuplot_serie.rash} +0 -0
- data/lib/viiite/command/plot/to_highcharts.rb +38 -0
- data/lib/viiite/command/plot/to_highcharts_graph.rb +29 -0
- data/lib/viiite/command/plot/to_text.rb +30 -0
- data/lib/viiite/command/report.rb +32 -10
- data/lib/viiite/command/run.rb +30 -7
- data/lib/viiite/errors.rb +5 -0
- data/lib/viiite/loader.rb +2 -2
- data/lib/viiite/tms.rb +21 -31
- data/lib/viiite/version.rb +5 -5
- data/spec/fixtures/bdb/Array/bench_sort.rb +7 -0
- data/spec/fixtures/{bench_iteration.rb → bdb/bench_iteration.rb} +2 -4
- data/spec/fixtures/command/bench_iteration.rb +3 -0
- data/spec/fixtures/saved/Array/bench_sort.rash +12 -0
- data/spec/fixtures/saved/bench_iteration.rash +18 -0
- data/spec/integration/plot/plot_1.cmd +1 -0
- data/spec/integration/plot/plot_1.stdout +64 -0
- data/spec/integration/plot/plot_2.cmd +1 -0
- data/spec/integration/plot/plot_2.stdout +37 -0
- data/spec/integration/plot/plot_3.cmd +1 -0
- data/spec/integration/plot/plot_3.stdout +64 -0
- data/spec/integration/plot/plot_4.cmd +1 -0
- data/spec/integration/plot/plot_4.stdout +1 -0
- data/spec/integration/report/viiite_report_1.cmd +1 -1
- data/spec/integration/report/viiite_report_1.stdout +7 -7
- data/spec/integration/report/viiite_report_2.cmd +1 -1
- data/spec/integration/report/viiite_report_2.stdout +22 -10
- data/spec/integration/report/viiite_report_3.cmd +1 -1
- data/spec/integration/report/viiite_report_3.stdout +46 -18
- data/spec/integration/report/viiite_report_4.cmd +1 -1
- data/spec/integration/report/viiite_report_4.stdout +34 -22
- data/spec/integration/report/viiite_report_5.cmd +1 -0
- data/spec/integration/report/viiite_report_5.stdout +7 -0
- data/spec/integration/report/viiite_report_6.cmd +1 -0
- data/spec/integration/report/viiite_report_6.stdout +7 -0
- data/spec/integration/report/viiite_report_7.cmd +1 -0
- data/spec/integration/report/viiite_report_7.stdout +7 -0
- data/spec/integration/report/viiite_report_8.cmd +1 -0
- data/spec/integration/report/viiite_report_8.stdout +16 -0
- data/spec/integration/report/viiite_report_9.cmd +1 -0
- data/spec/integration/report/viiite_report_9.stdout +88 -0
- data/spec/integration/test_command.rb +19 -23
- data/spec/integration/viiite/viiite_help.stdout +6 -0
- data/spec/spec_helper.rb +11 -17
- data/spec/unit/bdb/cached/test_dataset.rb +68 -0
- data/spec/unit/bdb/immediate/test_benchmark.rb +31 -0
- data/spec/unit/bdb/immediate/test_dataset.rb +31 -0
- data/spec/unit/bdb/immediate/test_enumerable.rb +20 -0
- data/spec/unit/bdb/immediate/test_pattern.rb +25 -0
- data/spec/unit/bdb/test_new.rb +44 -0
- data/spec/unit/bdb/utils/test_bench_file.rb +24 -0
- data/spec/unit/bdb/utils/test_replace_extension.rb +21 -0
- data/spec/unit/benchmark/bench_add.rb +3 -0
- data/spec/unit/benchmark/test_new.rb +28 -0
- data/spec/unit/command/commons/existing.rash +1 -0
- data/spec/unit/command/commons/test_single_source.rb +64 -0
- data/spec/unit/{formatter/plot → command/plot/gnuplot_utils}/test_to_data.rb +4 -4
- data/spec/unit/{formatter/plot → command/plot/gnuplot_utils}/test_to_dataset.rb +5 -5
- data/spec/unit/{formatter/plot → command/plot/gnuplot_utils}/test_to_plot.rb +4 -4
- data/spec/unit/command/test_run.rb +25 -12
- data/spec/unit/{test_runner.rb → test_benchmark.rb} +30 -11
- data/spec/unit/test_viiite.rb +17 -4
- data/spec/unit/tms/test_attributes.rb +11 -0
- data/spec/unit/tms/test_coerce.rb +11 -23
- data/spec/unit/tms/test_conversions.rb +23 -0
- data/spec/unit/tms/test_operations.rb +22 -0
- data/tasks/clean.rake +1 -1
- data/tasks/debug_mail.rake +13 -13
- data/tasks/gem.rake +13 -13
- data/tasks/integration_test.rake +3 -3
- data/tasks/spec_test.rake +9 -9
- data/tasks/unit_test.rake +9 -10
- data/tasks/yard.rake +13 -13
- data/viiite.gemspec +26 -29
- data/viiite.noespec +4 -7
- metadata +335 -235
- data/examples/bench_sort.eps +0 -816
- data/examples/bench_sort.rash +0 -100
- data/examples/raw.rash +0 -6
- data/lib/viiite/formatter.rb +0 -5
- data/lib/viiite/formatter/plot.rb +0 -38
- data/lib/viiite/runner.rb +0 -59
- data/lib/viiite/viiite_file.rb +0 -20
- data/spec/integration/raw_data.rash +0 -6
- data/spec/unit/tms/test_divide.rb +0 -26
- data/spec/unit/tms/test_minus.rb +0 -26
- data/spec/unit/tms/test_plus.rb +0 -34
- data/spec/unit/tms/test_times.rb +0 -26
- data/spec/unit/tms/test_to_a.rb +0 -11
- data/spec/unit/tms/test_to_ruby_literal.rb +0 -11
- data/spec/unit/tms/test_to_s.rb +0 -11
@@ -0,0 +1,65 @@
|
|
1
|
+
module Viiite
|
2
|
+
class Command
|
3
|
+
class Plot
|
4
|
+
|
5
|
+
options do |opt|
|
6
|
+
opt.on("--gnuplot=[TERM]",
|
7
|
+
"Render output as a gnuplot text (and terminal)") do |value|
|
8
|
+
@render = :gnuplot
|
9
|
+
@gnuplot_term = (value || "dumb").to_sym
|
10
|
+
@graph_style = load_style("to_gnuplot_graph.rash", __FILE__) unless @graph_style
|
11
|
+
@serie_style = load_style("to_gnuplot_serie.rash", __FILE__) unless @serie_style
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_gnuplot_query(lispy, op)
|
16
|
+
lispy = Alf.lispy
|
17
|
+
op = lispy.summarize(op, [@graph, @series, @abscissa].compact,
|
18
|
+
{:y => "avg{ #{@ordinate} }"})
|
19
|
+
op = lispy.join(op, @serie_style) if @serie_style
|
20
|
+
op = lispy.rename(op, @graph => :graph, @abscissa => :x, @series => :serie)
|
21
|
+
op = lispy.group(op, [:x, :y], :data)
|
22
|
+
op = lispy.rename(op, :serie => :title)
|
23
|
+
op = lispy.group(op, [:graph], :series, {:allbut => true})
|
24
|
+
op = lispy.join(op, @graph_style) if @graph_style
|
25
|
+
op = lispy.rename(op, :graph => :title)
|
26
|
+
op
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_gnuplot(lispy, op)
|
30
|
+
puts "set terminal #{@gnuplot_term}"
|
31
|
+
GnuplotUtils.to_plots(op.to_a, $stdout)
|
32
|
+
end
|
33
|
+
|
34
|
+
module GnuplotUtils
|
35
|
+
extend self
|
36
|
+
def to_data(rel)
|
37
|
+
[rel.collect{|t| t[:x]}, rel.collect{|t| t[:y]}]
|
38
|
+
end
|
39
|
+
def to_dataset(tuple)
|
40
|
+
ds = Gnuplot::DataSet.new(to_data(tuple[:data]))
|
41
|
+
tuple.each_pair do |k,v|
|
42
|
+
next if k == :data
|
43
|
+
ds.send(:"#{k}=", v) if ds.respond_to?(:"#{k}=")
|
44
|
+
end
|
45
|
+
ds
|
46
|
+
end
|
47
|
+
def to_plot(graph)
|
48
|
+
Gnuplot::Plot.new do |plot|
|
49
|
+
graph.each_pair do |k,v|
|
50
|
+
next if k == :series
|
51
|
+
plot.set(k.id2name, v)
|
52
|
+
end
|
53
|
+
plot.data = graph[:series].collect{|d| to_dataset(d)}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
def to_plots(graphs, buffer = "")
|
57
|
+
graphs.each do |tuple|
|
58
|
+
buffer << to_plot(tuple).to_gplot << "\n"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end # module Utils
|
62
|
+
|
63
|
+
end # class Plot
|
64
|
+
end # class Command
|
65
|
+
end # module Viiite
|
File without changes
|
File without changes
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Viiite
|
2
|
+
class Command
|
3
|
+
class Plot
|
4
|
+
|
5
|
+
options do |opt|
|
6
|
+
opt.on("--highcharts=[TERM]",
|
7
|
+
"Render output for highcharts.js") do |value|
|
8
|
+
@render = :highcharts
|
9
|
+
@highcharts_term = (value || "json").to_sym
|
10
|
+
@graph_style = load_style("to_highcharts_graph.rb", __FILE__) unless @graph_style
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_highcharts_query(lispy, op)
|
15
|
+
lispy = Alf.lispy
|
16
|
+
op = lispy.summarize(op, [@graph, @series, @abscissa].compact,
|
17
|
+
{:y => "avg{ #{@ordinate} }"})
|
18
|
+
op = lispy.rename(op, @graph => :graph, @abscissa => :x, @series => :serie)
|
19
|
+
op = lispy.summarize(op,
|
20
|
+
[:x, :y],
|
21
|
+
{:data => lispy.collect{ [x, y] }},
|
22
|
+
{:allbut => true})
|
23
|
+
op = lispy.rename(op, :serie => :name)
|
24
|
+
op = lispy.group(op, [:name, :data], :series)
|
25
|
+
op = lispy.join(op, @graph_style) if @graph_style
|
26
|
+
op = lispy.extend(op, :title => lambda{ title.merge(:text => graph) })
|
27
|
+
op = lispy.project(op, [:graph], {:allbut => true})
|
28
|
+
op
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_highcharts(lispy, op)
|
32
|
+
require 'json'
|
33
|
+
puts op.to_a.to_json
|
34
|
+
end
|
35
|
+
|
36
|
+
end # class Plot
|
37
|
+
end # class Command
|
38
|
+
end # module Viiite
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Alf::Relation[{
|
2
|
+
:chart => {
|
3
|
+
:renderTo => 'container',
|
4
|
+
:defaultSeriesType => 'line',
|
5
|
+
:marginRight => 170,
|
6
|
+
:marginBottom => 25
|
7
|
+
},
|
8
|
+
:title => {
|
9
|
+
:x => -20
|
10
|
+
},
|
11
|
+
:yAxis => {
|
12
|
+
:title => {
|
13
|
+
:text => 'Time (sec.)'
|
14
|
+
},
|
15
|
+
:plotLines => [{
|
16
|
+
:value => 0,
|
17
|
+
:width => 1,
|
18
|
+
:color => '#808080'
|
19
|
+
}]
|
20
|
+
},
|
21
|
+
:legend => {
|
22
|
+
:layout => 'vertical',
|
23
|
+
:align => 'right',
|
24
|
+
:verticalAlign => 'top',
|
25
|
+
:x => -10,
|
26
|
+
:y => 100,
|
27
|
+
:borderWidth => 0
|
28
|
+
}
|
29
|
+
}]
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Viiite
|
2
|
+
class Command
|
3
|
+
class Plot
|
4
|
+
|
5
|
+
options do |opt|
|
6
|
+
@render = :text
|
7
|
+
opt.on('--text', "Render output as a text table") do
|
8
|
+
@render = :text
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_text_query(lispy, op)
|
13
|
+
lispy = Alf.lispy
|
14
|
+
op = lispy.summarize(op, [@graph, @series, @abscissa].compact,
|
15
|
+
{:y => "avg{ #{@ordinate} }"})
|
16
|
+
op = lispy.rename(op, @graph => :graph, @abscissa => :x, @series => :serie)
|
17
|
+
op = lispy.group(op, [:x, :y], :data)
|
18
|
+
op = lispy.rename(op, :serie => :title)
|
19
|
+
op = lispy.group(op, [:graph], :series, {:allbut => true})
|
20
|
+
op = lispy.rename(op, :graph => :title)
|
21
|
+
op
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_text(lispy, op)
|
25
|
+
Alf::Renderer.text(op).execute($stdout)
|
26
|
+
end
|
27
|
+
|
28
|
+
end # class Plot
|
29
|
+
end # class Command
|
30
|
+
end # module Viiite
|
@@ -10,6 +10,7 @@ module Viiite
|
|
10
10
|
# #{summarized_options}
|
11
11
|
#
|
12
12
|
class Report < Quickl::Command(__FILE__, __LINE__)
|
13
|
+
include Commons
|
13
14
|
|
14
15
|
options do |opt|
|
15
16
|
|
@@ -20,28 +21,49 @@ module Viiite
|
|
20
21
|
end
|
21
22
|
|
22
23
|
@hierarchy = false
|
23
|
-
opt.on('-h', "--hierarchy",
|
24
|
+
opt.on('-h', "--hierarchy",
|
25
|
+
"Make a hierarchical regrouping") do
|
24
26
|
@hierarchy = true
|
25
27
|
end
|
26
28
|
|
29
|
+
@stddev = false
|
30
|
+
opt.on("--stddev=[FIELD]",
|
31
|
+
"Add the standard deviation on FIELD") do |field|
|
32
|
+
@stddev = field || "tms.total"
|
33
|
+
end
|
34
|
+
|
35
|
+
@ff = "%.6f"
|
36
|
+
opt.on("--ff=FORMAT",
|
37
|
+
"Specify the floating point format") do |val|
|
38
|
+
@ff = val
|
39
|
+
end
|
27
40
|
end
|
28
41
|
|
29
42
|
def query(op)
|
30
43
|
lispy = Alf.lispy
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
44
|
+
aggs = {:user => lispy.avg{tms.utime},
|
45
|
+
:system => lispy.avg{tms.stime},
|
46
|
+
:total => lispy.avg{tms.total},
|
47
|
+
:real => lispy.avg{tms.real}}
|
48
|
+
aggs[:stddev] = "stddev{ #{@stddev} }" if @stddev
|
49
|
+
op = lispy.summarize(op, @regroup, aggs)
|
50
|
+
depend = [:user, :system, :total, :real]
|
51
|
+
depend += [:stddev] if @stddev
|
52
|
+
@regroup[1..-1].reverse.each do |grouping|
|
53
|
+
op = lispy.group(op, [grouping] + depend, :measure)
|
54
|
+
depend = [:measure]
|
55
|
+
end if @hierarchy
|
35
56
|
op
|
36
57
|
end
|
37
58
|
|
38
|
-
def execute(
|
39
|
-
|
40
|
-
|
41
|
-
|
59
|
+
def execute(argv)
|
60
|
+
op = single_source(argv) do |bdb, arg|
|
61
|
+
bdb.dataset(arg)
|
62
|
+
end
|
63
|
+
op = query(op)
|
64
|
+
Alf::Renderer.text(op, {:float_format => @ff}).execute($stdout)
|
42
65
|
end
|
43
66
|
|
44
67
|
end # class Report
|
45
68
|
end # class Command
|
46
69
|
end # module Viiite
|
47
|
-
|
data/lib/viiite/command/run.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Viiite
|
2
2
|
class Command
|
3
|
-
#
|
3
|
+
#
|
4
4
|
# Run a benchmark and output raw data
|
5
5
|
#
|
6
6
|
# SYNOPSIS
|
@@ -10,12 +10,35 @@ module Viiite
|
|
10
10
|
# #{summarized_options}
|
11
11
|
#
|
12
12
|
class Run < Quickl::Command(__FILE__, __LINE__)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
include Commons
|
14
|
+
|
15
|
+
options do |opt|
|
16
|
+
@runs = 1
|
17
|
+
opt.on("--runs=[NB]",
|
18
|
+
"Run the benchmark NB times") do |val|
|
19
|
+
@runs = val.to_i
|
20
|
+
@run_key = :run unless @run_key
|
21
|
+
end
|
22
|
+
@run_key = nil
|
23
|
+
opt.on("--run-key=[KEY]",
|
24
|
+
"Specify the run key (default to :run)") do |val|
|
25
|
+
@run_key = val.to_sym
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def execute(argv)
|
30
|
+
argv = requester.bdb.to_rel.collect{|t| t[:name]} if argv.empty?
|
31
|
+
argv.each do |name|
|
32
|
+
benchmark = single_source([name]) do |bdb, arg|
|
33
|
+
bdb.benchmark(arg)
|
34
|
+
end
|
35
|
+
@runs.times do |run|
|
36
|
+
benchmark.each do |tuple|
|
37
|
+
tuple[@run_key] = run if @run_key
|
38
|
+
puts Alf::Tools.to_ruby_literal(tuple)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
19
42
|
end
|
20
43
|
|
21
44
|
end # class Run
|
data/lib/viiite/loader.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
require "alf"
|
2
|
-
require "
|
3
|
-
require "
|
2
|
+
require "gnuplot"
|
3
|
+
require "json"
|
data/lib/viiite/tms.rb
CHANGED
@@ -1,36 +1,30 @@
|
|
1
1
|
module Viiite
|
2
|
-
class Tms
|
2
|
+
class Tms < Struct.new(:utime, :stime, :cutime, :cstime, :real)
|
3
3
|
|
4
4
|
FMTSTR = "%10.6u %10.6y %10.6t %10.6r"
|
5
|
-
FIELDS = [:utime, :stime, :cutime, :cstime, :real]
|
6
5
|
|
7
|
-
def initialize(
|
8
|
-
|
6
|
+
def initialize(utime, stime, cutime, cstime, real)
|
7
|
+
super # ensure we have all 5 non-nil arguments
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.coerce(arg)
|
12
11
|
case arg
|
13
12
|
when Viiite::Tms
|
14
13
|
arg
|
15
|
-
when Benchmark::Tms
|
16
|
-
Viiite::Tms.new arg.to_a[1..-1]
|
17
14
|
when Numeric
|
18
|
-
Viiite::Tms.new
|
15
|
+
Viiite::Tms.new arg, 0.0, 0.0, 0.0, 0.0
|
19
16
|
when Hash
|
20
|
-
Viiite::Tms.new
|
17
|
+
Viiite::Tms.new(*members.collect{|f| arg[f] || 0.0})
|
21
18
|
when Array
|
22
|
-
Viiite::Tms.new
|
19
|
+
Viiite::Tms.new(*arg)
|
23
20
|
else
|
24
21
|
raise ArgumentError, "Invalid value #{arg.inspect} for Viiite::Tms"
|
25
22
|
end
|
26
23
|
end
|
27
24
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
def cstime; @tms[3]; end
|
32
|
-
def real; @tms[4]; end
|
33
|
-
def total; cutime + cstime + stime + utime; end
|
25
|
+
def total
|
26
|
+
cutime + cstime + stime + utime
|
27
|
+
end
|
34
28
|
|
35
29
|
def to_ruby_literal
|
36
30
|
"Viiite::Tms(#{to_a.collect{|f| f.inspect}.join(',')})"
|
@@ -46,22 +40,9 @@ module Viiite
|
|
46
40
|
end
|
47
41
|
|
48
42
|
def to_h
|
49
|
-
@to_h ||= Hash[
|
50
|
-
end
|
51
|
-
|
52
|
-
def to_a
|
53
|
-
@to_a ||= FIELDS.collect{|f| send(f)}
|
54
|
-
end
|
55
|
-
|
56
|
-
def hash
|
57
|
-
to_a.hash
|
43
|
+
@to_h ||= Hash[members.zip(values)]
|
58
44
|
end
|
59
45
|
|
60
|
-
def ==(other)
|
61
|
-
other.is_a?(Tms) && (other.to_a == self.to_a)
|
62
|
-
end
|
63
|
-
alias :eql? :==
|
64
|
-
|
65
46
|
def format(arg0 = nil, *args)
|
66
47
|
fmtstr = (arg0 || FMTSTR).dup
|
67
48
|
fmtstr.gsub!(/(%[-+\.\d]*)u/){"#{$1}f" % utime}
|
@@ -79,11 +60,20 @@ module Viiite
|
|
79
60
|
def memberwise(op, x)
|
80
61
|
case x
|
81
62
|
when Viiite::Tms
|
82
|
-
Viiite::Tms.new
|
63
|
+
Viiite::Tms.new(*values.zip(x.values).collect {|a,b| a.send(op, b)})
|
83
64
|
else
|
84
|
-
Viiite::Tms.new
|
65
|
+
Viiite::Tms.new(*values.collect{|v| v.send(op, x)})
|
85
66
|
end
|
86
67
|
end
|
87
68
|
|
69
|
+
if RUBY_VERSION < '1.9'
|
70
|
+
public
|
71
|
+
def members; super.map(&:to_sym); end
|
72
|
+
def self.members; super.map(&:to_sym); end
|
73
|
+
end
|
88
74
|
end # class Tms
|
75
|
+
|
76
|
+
def self.Tms(*args)
|
77
|
+
Viiite::Tms.new(*args)
|
78
|
+
end
|
89
79
|
end # module Viiite
|
data/lib/viiite/version.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
|
-
|
2
|
-
n =
|
3
|
-
Viiite.bm do |r|
|
1
|
+
Viiite.bench do |r|
|
2
|
+
n = 1000
|
4
3
|
r.variation_point :ruby, Viiite.which_ruby
|
5
4
|
r.report(:for) { for i in 1..n; a = "1"; end }
|
6
5
|
r.report(:times) { n.times do ; a = "1"; end }
|
7
6
|
r.report(:upto) { 1.upto(n) do ; a = "1"; end }
|
8
7
|
end
|
9
|
-
|
@@ -0,0 +1,12 @@
|
|
1
|
+
{:ruby => "jruby 1.6.3", :size => 100, :bench => :"Array#sort", :tms => Viiite::Tms(0.00200009346008301,0.0,0.0,0.0,0.00200009346008301)}
|
2
|
+
{:ruby => "jruby 1.6.3", :size => 1000, :bench => :"Array#sort", :tms => Viiite::Tms(0.0189998149871826,0.0,0.0,0.0,0.0199999809265137)}
|
3
|
+
{:size => 100, :bench => :"Array#sort", :tms => Viiite::Tms(0.0,0.0,0.0,0.0,0.00038504600524902344), :ruby => "rubinius 2.0.0dev"}
|
4
|
+
{:size => 1000, :bench => :"Array#sort", :tms => Viiite::Tms(0.0040000000000000036,0.0,0.0,0.0,0.005118131637573242), :ruby => "rubinius 2.0.0dev"}
|
5
|
+
{:bench => :"Array#sort", :tms => Viiite::Tms(0.0,0.0,0.0,0.0,8.20159912109375e-05), :size => 100, :ruby => "ruby 1.8.7"}
|
6
|
+
{:bench => :"Array#sort", :tms => Viiite::Tms(0.0,0.0,0.0,0.0,0.00109100341796875), :size => 1000, :ruby => "ruby 1.8.7"}
|
7
|
+
{:ruby => "rubinius 1.2.5dev", :size => 100, :bench => :"Array#sort", :tms => Viiite::Tms(0.0,0.0,0.0,0.0,0.0003991127014160156)}
|
8
|
+
{:ruby => "rubinius 1.2.5dev", :size => 1000, :bench => :"Array#sort", :tms => Viiite::Tms(0.02800199999999997,0.0,0.0,0.0,0.04252505302429199)}
|
9
|
+
{:ruby => "ruby 1.9.3dev", :size => 100, :bench => :"Array#sort", :tms => Viiite::Tms(0.0,0.0,0.0,0.0,8.368492126464844e-05)}
|
10
|
+
{:ruby => "ruby 1.9.3dev", :size => 1000, :bench => :"Array#sort", :tms => Viiite::Tms(0.0,0.0,0.0,0.0,0.0011630058288574219)}
|
11
|
+
{:ruby => "ruby 1.9.2p290", :size => 100, :bench => :"Array#sort", :tms => Viiite::Tms(0.0,0.0,0.0,0.0,8.0108642578125e-05)}
|
12
|
+
{:ruby => "ruby 1.9.2p290", :size => 1000, :bench => :"Array#sort", :tms => Viiite::Tms(0.0,0.0,0.0,0.0,0.0011208057403564453)}
|