bullshit 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +8 -0
- data/README +25 -0
- data/Rakefile +19 -30
- data/VERSION +1 -1
- data/bin/bs_compare +21 -0
- data/examples/compare.rb +2 -2
- data/examples/throw_raise.rb +35 -0
- data/lib/bullshit.rb +92 -77
- data/lib/bullshit/version.rb +1 -1
- data/make_doc.rb +2 -1
- metadata +28 -27
- data/bullshit.gemspec +0 -24
data/CHANGES
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
2009-10-17 (0.1.1)
|
2
|
+
* Added the display of a speedup matrix in the comparison.
|
3
|
+
* Added a bs_compare executble in order to compare data files.
|
4
|
+
* A lot of smaller changes, esp. make comparing more robust by skipping
|
5
|
+
unavailable data files.
|
6
|
+
* throw_raise example added.
|
7
|
+
2009-08-31 (0.1.0)
|
8
|
+
* Initial Release Version
|
data/README
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
= Bullshit - Benchmarking in Ruby
|
2
|
+
|
3
|
+
== Description
|
4
|
+
|
5
|
+
== Usage
|
6
|
+
|
7
|
+
== Example
|
8
|
+
|
9
|
+
TODO
|
10
|
+
|
11
|
+
== Download
|
12
|
+
|
13
|
+
The homepage of this library is located at
|
14
|
+
|
15
|
+
* http://flori.github.com/bullshit
|
16
|
+
|
17
|
+
== Author
|
18
|
+
|
19
|
+
Florian Frank mailto:flori@ping.de
|
20
|
+
|
21
|
+
== License
|
22
|
+
|
23
|
+
This is free software; you can redistribute it and/or modify it under the
|
24
|
+
terms of the GNU General Public License Version 2 as published by the Free
|
25
|
+
Software Foundation: www.gnu.org/copyleft/gpl.html
|
data/Rakefile
CHANGED
@@ -33,41 +33,30 @@ task :doc do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
if defined? Gem
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
s.summary = "Benchmarking is Bullshit"
|
42
|
-
s.description = ""
|
36
|
+
spec = Gem::Specification.new do |s|
|
37
|
+
s.name = PKG_NAME
|
38
|
+
s.version = PKG_VERSION
|
39
|
+
s.summary = "Benchmarking is Bullshit"
|
40
|
+
s.description = ""
|
43
41
|
|
44
|
-
|
42
|
+
s.add_dependency('dslkit', '>= 0.2.5')
|
45
43
|
|
46
|
-
|
44
|
+
s.files = PKG_FILES
|
47
45
|
|
48
|
-
|
46
|
+
s.require_path = 'lib'
|
47
|
+
s.executables = 'bs_compare'
|
49
48
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
'
|
54
|
-
s.test_files = #{Dir['tests/*.rb'].to_a.sort.inspect}
|
49
|
+
s.has_rdoc = true
|
50
|
+
s.rdoc_options <<
|
51
|
+
'--title' << 'Bullshit -- Benchmarking in Ruby' << '--main' << 'README'
|
52
|
+
s.test_files = Dir['tests/*.rb']
|
55
53
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end
|
61
|
-
GEM
|
62
|
-
|
63
|
-
desc 'Create a gemspec file'
|
64
|
-
task :gemspec do
|
65
|
-
File.open("#{PKG_NAME}.gemspec", 'w') do |f|
|
66
|
-
f.puts spec_src
|
67
|
-
end
|
54
|
+
s.author = "Florian Frank"
|
55
|
+
s.email = "flori@ping.de"
|
56
|
+
s.homepage = "http://flori.github.com/#{PKG_NAME}"
|
57
|
+
s.rubyforge_project = PKG_NAME
|
68
58
|
end
|
69
59
|
|
70
|
-
spec = eval(spec_src)
|
71
60
|
Rake::GemPackageTask.new(spec) do |pkg|
|
72
61
|
pkg.need_tar = true
|
73
62
|
pkg.package_files += PKG_FILES
|
@@ -91,6 +80,6 @@ EOT
|
|
91
80
|
end
|
92
81
|
end
|
93
82
|
|
94
|
-
task :default => [ :version, :
|
83
|
+
task :default => [ :version, :test ]
|
95
84
|
|
96
|
-
task :release => [ :clobber, :version, :
|
85
|
+
task :release => [ :clobber, :version, :package ]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/bin/bs_compare
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'bullshit'
|
4
|
+
Bullshit::Case.autorun false
|
5
|
+
|
6
|
+
bs_cases_methods = []
|
7
|
+
for filename in ARGV
|
8
|
+
if filename =~ /\.rb\Z/
|
9
|
+
warn "Loading #{filename}."
|
10
|
+
load filename
|
11
|
+
next
|
12
|
+
end
|
13
|
+
basename = File.basename(filename)
|
14
|
+
basename =~ /\A([^-]+)#([^-]+)\.dat\Z/ or next
|
15
|
+
bs_cases_methods << [ $1, $2, filename ]
|
16
|
+
end
|
17
|
+
Bullshit.compare do
|
18
|
+
bs_cases_methods.each do |c, m, f|
|
19
|
+
benchmark Object.const_get(c), m.to_sym, :load => f
|
20
|
+
end
|
21
|
+
end
|
data/examples/compare.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'bullshit'
|
4
|
-
|
4
|
+
load File.join(File.dirname(__FILE__), 'fibonacci.rb')
|
5
5
|
|
6
|
-
FibonacciBenchmark.run # to demonstrate loading
|
6
|
+
FibonacciBenchmark.run false # to demonstrate loading, do not compare yet
|
7
7
|
|
8
8
|
Bullshit.compare do
|
9
9
|
benchmark FibonacciBenchmark, :fib_iter, :load => yes
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'bullshit'
|
4
|
+
|
5
|
+
class ThrowRaise < Bullshit::RepeatCase
|
6
|
+
compare_time real
|
7
|
+
warmup yes
|
8
|
+
iterations 100
|
9
|
+
|
10
|
+
N = 2_000
|
11
|
+
|
12
|
+
autocorrelation yes
|
13
|
+
|
14
|
+
output_dir 'data'
|
15
|
+
data_file yes
|
16
|
+
|
17
|
+
#output_filename "#{benchmark_name}.log"
|
18
|
+
|
19
|
+
def benchmark_throw
|
20
|
+
N.times do
|
21
|
+
catch(:foo) do
|
22
|
+
throw :foo
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def benchmark_raise
|
28
|
+
N.times do
|
29
|
+
begin
|
30
|
+
raise 'foo'
|
31
|
+
rescue
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/bullshit.rb
CHANGED
@@ -1,32 +1,3 @@
|
|
1
|
-
# = Bullshit - Benchmarking in Ruby
|
2
|
-
#
|
3
|
-
# == Description
|
4
|
-
#
|
5
|
-
# == Usage
|
6
|
-
#
|
7
|
-
# == Author
|
8
|
-
#
|
9
|
-
# Florian Frank mailto:flori@ping.de
|
10
|
-
#
|
11
|
-
# == License
|
12
|
-
#
|
13
|
-
# This is free software; you can redistribute it and/or modify it under the
|
14
|
-
# terms of the GNU General Public License Version 2 as published by the Free
|
15
|
-
# Software Foundation: www.gnu.org/copyleft/gpl.html
|
16
|
-
#
|
17
|
-
# == Download
|
18
|
-
#
|
19
|
-
# The latest version of this library can be downloaded at
|
20
|
-
#
|
21
|
-
# * http://rubyforge.org/frs/?group_id=8323
|
22
|
-
#
|
23
|
-
# The homepage of this library is located at
|
24
|
-
#
|
25
|
-
# * http://bullshit.rubyforge.org
|
26
|
-
#
|
27
|
-
# == Example
|
28
|
-
#
|
29
|
-
|
30
1
|
require 'dslkit'
|
31
2
|
require 'enumerator'
|
32
3
|
|
@@ -463,6 +434,11 @@ module Bullshit
|
|
463
434
|
define_method(time) { analysis[time].sum }
|
464
435
|
end
|
465
436
|
|
437
|
+
# Returns the sum of measurement times for +time+.
|
438
|
+
def sum(time)
|
439
|
+
__send__ time
|
440
|
+
end
|
441
|
+
|
466
442
|
# Seconds per call (mean)
|
467
443
|
def call_time_mean
|
468
444
|
mean(self.case.compare_time)
|
@@ -1301,11 +1277,11 @@ module Bullshit
|
|
1301
1277
|
# This method tries to detect autocorrelation with the Ljung-Box
|
1302
1278
|
# statistic. If enough lags can be considered it returns a hash with
|
1303
1279
|
# results, otherwise nil is returned. The keys are
|
1304
|
-
#
|
1305
|
-
#
|
1306
|
-
#
|
1307
|
-
#
|
1308
|
-
#
|
1280
|
+
# :lags:: the number of lags,
|
1281
|
+
# :alpha_level:: the alpha level for the test,
|
1282
|
+
# :q:: the value of the ljung_box_statistic,
|
1283
|
+
# :p:: the p-value computed, if p is higher than alpha no correlation was detected,
|
1284
|
+
# :detected:: true if a correlation was found.
|
1309
1285
|
def detect_autocorrelation(lags = 20, alpha_level = 0.05)
|
1310
1286
|
if q = ljung_box_statistic(lags)
|
1311
1287
|
p = ChiSquareDistribution.new(lags).probability(q)
|
@@ -1446,7 +1422,10 @@ module Bullshit
|
|
1446
1422
|
end
|
1447
1423
|
end
|
1448
1424
|
self
|
1425
|
+
rescue Errno::ENOENT
|
1449
1426
|
end
|
1427
|
+
|
1428
|
+
alias to_s long_name
|
1450
1429
|
end
|
1451
1430
|
|
1452
1431
|
module CommonConstants
|
@@ -1489,6 +1468,8 @@ module Bullshit
|
|
1489
1468
|
|
1490
1469
|
dsl_accessor :batch_size, 1
|
1491
1470
|
|
1471
|
+
dsl_accessor :comparison, true
|
1472
|
+
|
1492
1473
|
class TruncateData
|
1493
1474
|
extend DSLKit::DSLAccessor
|
1494
1475
|
extend DSLKit::Constant
|
@@ -1507,8 +1488,8 @@ module Bullshit
|
|
1507
1488
|
def initialize(enable, &block)
|
1508
1489
|
if block
|
1509
1490
|
enable.nil? or raise ArgumentError, "block form doesn't take an argument"
|
1510
|
-
instance_eval(&block)
|
1511
1491
|
enabled true
|
1492
|
+
instance_eval(&block)
|
1512
1493
|
else
|
1513
1494
|
enabled enable.nil? ? false : enable
|
1514
1495
|
end
|
@@ -1556,8 +1537,8 @@ module Bullshit
|
|
1556
1537
|
def initialize(enable = nil, &block)
|
1557
1538
|
if block
|
1558
1539
|
enable.nil? or raise ArgumentError, "block form doesn't take an argument"
|
1559
|
-
instance_eval(&block)
|
1560
1540
|
enabled true
|
1541
|
+
instance_eval(&block)
|
1561
1542
|
else
|
1562
1543
|
enabled enable.nil? ? true : enable
|
1563
1544
|
end
|
@@ -1658,8 +1639,10 @@ module Bullshit
|
|
1658
1639
|
# measure their running time.
|
1659
1640
|
def initialize
|
1660
1641
|
@clocks = []
|
1661
|
-
|
1662
|
-
|
1642
|
+
if self.class.comparison
|
1643
|
+
@comparison = Comparison.new
|
1644
|
+
@comparison.output self.class.output
|
1645
|
+
end
|
1663
1646
|
end
|
1664
1647
|
|
1665
1648
|
# Return the name of the benchmark case as a string.
|
@@ -1769,7 +1752,9 @@ module Bullshit
|
|
1769
1752
|
self.class.output.puts evaluation(clock)
|
1770
1753
|
end
|
1771
1754
|
@clocks << clock
|
1772
|
-
@comparison
|
1755
|
+
if @comparison
|
1756
|
+
@comparison.benchmark(self, bc_method.short_name, :run => false)
|
1757
|
+
end
|
1773
1758
|
end
|
1774
1759
|
@clocks
|
1775
1760
|
end
|
@@ -1779,12 +1764,12 @@ module Bullshit
|
|
1779
1764
|
|
1780
1765
|
# Setup, run all benchmark cases (warmup and the real run) and output
|
1781
1766
|
# results, run method speed comparisons, and teardown.
|
1782
|
-
def run(
|
1767
|
+
def run(do_compare = true)
|
1783
1768
|
old_sync, self.class.output.sync = self.class.output.sync, true
|
1784
1769
|
$DEBUG and warn "Calling setup."
|
1785
1770
|
setup
|
1786
1771
|
run_once
|
1787
|
-
comparison and @comparison.display
|
1772
|
+
do_compare and @comparison and @comparison.display
|
1788
1773
|
self
|
1789
1774
|
rescue => e
|
1790
1775
|
warn "Caught #{e.class}: #{e}\n\n#{e.backtrace.map { |x| "\t#{x}\n" }}"
|
@@ -1796,8 +1781,8 @@ module Bullshit
|
|
1796
1781
|
end
|
1797
1782
|
|
1798
1783
|
# Creates an instance of this class and run it.
|
1799
|
-
def self.run
|
1800
|
-
new.run
|
1784
|
+
def self.run(do_compare = true)
|
1785
|
+
new.run do_compare
|
1801
1786
|
end
|
1802
1787
|
|
1803
1788
|
# Write all output files after run.
|
@@ -1880,7 +1865,7 @@ module Bullshit
|
|
1880
1865
|
module EvaluationModule
|
1881
1866
|
def statistics_table(clock)
|
1882
1867
|
result = ' ' * NAME_COLUMN_SIZE << ('%17s ' * 4) % times << "\n"
|
1883
|
-
result << evaluation_line('sum', times.map { |t| clock.
|
1868
|
+
result << evaluation_line('sum', times.map { |t| clock.sum(t) })
|
1884
1869
|
result << evaluation_line('min', times.map { |t| clock.min(t) })
|
1885
1870
|
result << evaluation_line('std-', times.map { |t| clock.arithmetic_mean(t) - clock.sample_standard_deviation(t) })
|
1886
1871
|
result << evaluation_line('mean', times.map { |t| clock.arithmetic_mean(t) })
|
@@ -2127,7 +2112,7 @@ module Bullshit
|
|
2127
2112
|
def benchmark(bc_class, method, opts = {})
|
2128
2113
|
opts = { :run => true, :combine => true }.merge opts
|
2129
2114
|
if Case === bc_class
|
2130
|
-
bullshit_case, bc_class = bc_class,
|
2115
|
+
bullshit_case, bc_class = bc_class, bc_class.class
|
2131
2116
|
@cases[bc_class] ||= []
|
2132
2117
|
if opts[:combine]
|
2133
2118
|
if @cases[bc_class].empty?
|
@@ -2155,15 +2140,20 @@ module Bullshit
|
|
2155
2140
|
if comment = opts[:comment]
|
2156
2141
|
bc_method.comment = comment
|
2157
2142
|
end
|
2158
|
-
@benchmark_methods << bc_method
|
2159
2143
|
if file_path = opts[:load]
|
2160
|
-
if file_path != true
|
2161
|
-
bc_method.load
|
2144
|
+
success = if file_path != true
|
2145
|
+
bc_method.load(file_path)
|
2162
2146
|
else
|
2163
2147
|
bc_method.load
|
2164
2148
|
end
|
2149
|
+
if success
|
2150
|
+
@benchmark_methods << bc_method
|
2151
|
+
else
|
2152
|
+
warn "Loading of #{bc_method} failed. Skipping to next."
|
2153
|
+
end
|
2165
2154
|
else
|
2166
2155
|
opts[:run] and bullshit_case.run false
|
2156
|
+
@benchmark_methods << bc_method
|
2167
2157
|
end
|
2168
2158
|
nil
|
2169
2159
|
end
|
@@ -2193,43 +2183,68 @@ module Bullshit
|
|
2193
2183
|
output.puts Time.now.strftime(' %FT%T %Z ').center(COLUMNS, '=')
|
2194
2184
|
for comparator in [ :call_time_mean, :call_time_median ]
|
2195
2185
|
output.puts
|
2196
|
-
|
2197
|
-
|
2198
|
-
max =
|
2186
|
+
cmethods = compare_methods(comparator)
|
2187
|
+
cmethods.size < 2 and return
|
2188
|
+
max = cmethods.last.clock.__send__(comparator)
|
2199
2189
|
output.puts "Comparing times (#{comparator}):"
|
2200
|
-
|
2201
|
-
covers = []
|
2202
|
-
for x in methods
|
2203
|
-
if m != x and m.cover?(x)
|
2204
|
-
j = 0
|
2205
|
-
if methods.find { |y| j += 1; x == y }
|
2206
|
-
my_case = m.case.class
|
2207
|
-
iterations = m.clock.analysis[my_case.compare_time].suggested_sample_size(
|
2208
|
-
x.clock.analysis[my_case.compare_time], my_case.covering.alpha_level, my_case.covering.beta_level)
|
2209
|
-
if iterations.nan? or iterations.infinite?
|
2210
|
-
covers << "#{j} (?)"
|
2211
|
-
else
|
2212
|
-
min_iterations = iterations.ceil
|
2213
|
-
min_iterations >= 1E6 and min_iterations = "%f" % (1 / 0.0)
|
2214
|
-
covers << "#{j} (>=#{min_iterations})"
|
2215
|
-
end
|
2216
|
-
end
|
2217
|
-
end
|
2218
|
-
end
|
2219
|
-
covers *= ', '
|
2190
|
+
cmethods.each_with_index do |m, i|
|
2220
2191
|
output.printf\
|
2221
2192
|
"% 2u #{prefix_string(m)}\n %17.9f"\
|
2222
|
-
" (%#{::Bullshit::Clock::TIMES_MAX}s)
|
2223
|
-
" %17.9f\n",
|
2193
|
+
" (%#{::Bullshit::Clock::TIMES_MAX}s) %s\n"\
|
2194
|
+
" %17.9f %8.2f %17.9f\n",
|
2224
2195
|
i + 1, m.clock.calls(comparator), m.case.class.compare_time,
|
2225
|
-
|
2196
|
+
compute_covers(cmethods, m), m.clock.__send__(comparator),
|
2197
|
+
m.clock.sample_standard_deviation_percentage(m.case.class.compare_time),
|
2198
|
+
m.clock.sum(m.case.class.compare_time)
|
2226
2199
|
end
|
2227
|
-
output.puts " %17s (%#{::Bullshit::Clock::TIMES_MAX}s)
|
2228
|
-
" %17s\n"\
|
2229
|
-
% %w[calls/sec time
|
2200
|
+
output.puts " %17s (%#{::Bullshit::Clock::TIMES_MAX}s) %s\n"\
|
2201
|
+
" %17s %8s %17s\n"\
|
2202
|
+
% %w[calls/sec time covers secs/call std% sum]
|
2203
|
+
display_speedup_matrix(cmethods, comparator)
|
2230
2204
|
end
|
2231
2205
|
output.puts '=' * COLUMNS
|
2232
2206
|
end
|
2207
|
+
|
2208
|
+
private
|
2209
|
+
|
2210
|
+
def display_speedup_matrix(cmethods, comparator)
|
2211
|
+
output.print "\n", " " * 3
|
2212
|
+
cmethods.size.times do |i|
|
2213
|
+
output.printf "%7d ", i + 1
|
2214
|
+
end
|
2215
|
+
output.puts
|
2216
|
+
cmethods.each_with_index do |x, i|
|
2217
|
+
output.printf "%2d ", i + 1
|
2218
|
+
cmethods.each do |y|
|
2219
|
+
ratio = x.clock.calls(comparator).to_f / y.clock.calls(comparator)
|
2220
|
+
ratio /= 0.0 if ratio >= 1000
|
2221
|
+
output.printf "%7.2f ", ratio
|
2222
|
+
end
|
2223
|
+
output.puts
|
2224
|
+
end
|
2225
|
+
end
|
2226
|
+
|
2227
|
+
def compute_covers(cmethods, m)
|
2228
|
+
covers = []
|
2229
|
+
for x in cmethods
|
2230
|
+
if m != x and m.cover?(x)
|
2231
|
+
j = 0
|
2232
|
+
if cmethods.find { |y| j += 1; x == y }
|
2233
|
+
my_case = m.case.class
|
2234
|
+
iterations = m.clock.analysis[my_case.compare_time].suggested_sample_size(
|
2235
|
+
x.clock.analysis[my_case.compare_time], my_case.covering.alpha_level, my_case.covering.beta_level)
|
2236
|
+
if iterations.nan? or iterations.infinite?
|
2237
|
+
covers << "#{j} (?)"
|
2238
|
+
else
|
2239
|
+
min_iterations = iterations.ceil
|
2240
|
+
min_iterations >= 1E6 and min_iterations = "%f" % (1 / 0.0)
|
2241
|
+
covers << "#{j} (>=#{min_iterations})"
|
2242
|
+
end
|
2243
|
+
end
|
2244
|
+
end
|
2245
|
+
end
|
2246
|
+
covers * ', '
|
2247
|
+
end
|
2233
2248
|
end
|
2234
2249
|
|
2235
2250
|
# Create a Comparison instance configured by +block+ and compute and display
|
data/lib/bullshit/version.rb
CHANGED
data/make_doc.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bullshit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-11-18 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -24,45 +24,46 @@ dependencies:
|
|
24
24
|
version:
|
25
25
|
description: ""
|
26
26
|
email: flori@ping.de
|
27
|
-
executables:
|
28
|
-
|
27
|
+
executables:
|
28
|
+
- bs_compare
|
29
29
|
extensions: []
|
30
30
|
|
31
31
|
extra_rdoc_files: []
|
32
32
|
|
33
33
|
files:
|
34
|
-
-
|
35
|
-
-
|
34
|
+
- CHANGES
|
35
|
+
- bin/bs_compare
|
36
36
|
- VERSION
|
37
|
-
-
|
38
|
-
-
|
39
|
-
-
|
40
|
-
- examples/
|
41
|
-
- examples/fibonacci.rb
|
37
|
+
- README
|
38
|
+
- make_doc.rb
|
39
|
+
- Rakefile
|
40
|
+
- examples/throw_raise.rb
|
42
41
|
- examples/iteration.rb
|
43
42
|
- examples/josephus.rb
|
43
|
+
- examples/fibonacci.rb
|
44
|
+
- examples/compare.rb
|
44
45
|
- examples/sorting.rb
|
45
|
-
- install.rb
|
46
|
-
- lib
|
47
|
-
- lib/bullshit
|
48
|
-
- lib/bullshit.rb
|
49
46
|
- lib/bullshit/version.rb
|
50
|
-
-
|
51
|
-
- tests
|
47
|
+
- lib/bullshit.rb
|
48
|
+
- tests/test_continued_fraction.rb
|
49
|
+
- tests/test_window.rb
|
50
|
+
- tests/test_functions.rb
|
52
51
|
- tests/test_analysis.rb
|
53
52
|
- tests/test_bullshit.rb
|
54
|
-
- tests/test_continued_fraction.rb
|
55
53
|
- tests/test_distribution.rb
|
56
|
-
- tests/test_functions.rb
|
57
54
|
- tests/test_newton_bisection.rb
|
58
|
-
-
|
55
|
+
- COPYING
|
56
|
+
- install.rb
|
59
57
|
has_rdoc: true
|
60
|
-
homepage: http://
|
58
|
+
homepage: http://flori.github.com/bullshit
|
59
|
+
licenses: []
|
60
|
+
|
61
61
|
post_install_message:
|
62
62
|
rdoc_options:
|
63
63
|
- --title
|
64
64
|
- Bullshit -- Benchmarking in Ruby
|
65
|
-
- --
|
65
|
+
- --main
|
66
|
+
- README
|
66
67
|
require_paths:
|
67
68
|
- lib
|
68
69
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -80,15 +81,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
81
|
requirements: []
|
81
82
|
|
82
83
|
rubyforge_project: bullshit
|
83
|
-
rubygems_version: 1.3.
|
84
|
+
rubygems_version: 1.3.5
|
84
85
|
signing_key:
|
85
|
-
specification_version:
|
86
|
+
specification_version: 3
|
86
87
|
summary: Benchmarking is Bullshit
|
87
88
|
test_files:
|
89
|
+
- tests/test_continued_fraction.rb
|
90
|
+
- tests/test_window.rb
|
91
|
+
- tests/test_functions.rb
|
88
92
|
- tests/test_analysis.rb
|
89
93
|
- tests/test_bullshit.rb
|
90
|
-
- tests/test_continued_fraction.rb
|
91
94
|
- tests/test_distribution.rb
|
92
|
-
- tests/test_functions.rb
|
93
95
|
- tests/test_newton_bisection.rb
|
94
|
-
- tests/test_window.rb
|
data/bullshit.gemspec
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
Gem::Specification.new do |s|
|
3
|
-
s.name = 'bullshit'
|
4
|
-
s.version = '0.1.0'
|
5
|
-
s.summary = "Benchmarking is Bullshit"
|
6
|
-
s.description = ""
|
7
|
-
|
8
|
-
s.add_dependency('dslkit', '>= 0.2.5')
|
9
|
-
|
10
|
-
s.files = ["COPYING", "Rakefile", "VERSION", "bullshit.gemspec", "data", "examples", "examples/compare.rb", "examples/fibonacci.rb", "examples/iteration.rb", "examples/josephus.rb", "examples/sorting.rb", "install.rb", "lib", "lib/bullshit", "lib/bullshit.rb", "lib/bullshit/version.rb", "make_doc.rb", "tests", "tests/test_analysis.rb", "tests/test_bullshit.rb", "tests/test_continued_fraction.rb", "tests/test_distribution.rb", "tests/test_functions.rb", "tests/test_newton_bisection.rb", "tests/test_window.rb"]
|
11
|
-
|
12
|
-
s.require_path = 'lib'
|
13
|
-
|
14
|
-
s.has_rdoc = true
|
15
|
-
s.rdoc_options <<
|
16
|
-
'--title' << 'Bullshit -- Benchmarking in Ruby' <<
|
17
|
-
'--line-numbers'
|
18
|
-
s.test_files = ["tests/test_analysis.rb", "tests/test_bullshit.rb", "tests/test_continued_fraction.rb", "tests/test_distribution.rb", "tests/test_functions.rb", "tests/test_newton_bisection.rb", "tests/test_window.rb"]
|
19
|
-
|
20
|
-
s.author = "Florian Frank"
|
21
|
-
s.email = "flori@ping.de"
|
22
|
-
s.homepage = "http://bullshit.rubyforge.org"
|
23
|
-
s.rubyforge_project = "bullshit"
|
24
|
-
end
|