bullshit 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|