1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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
|
# encoding: utf-8
module BayesianCommonBenchmarks
MAX_RECORDS = 5000
class BenchmarkReporter < Minitest::Reporters::BaseReporter
include ANSI::Code
def before_suite(suite)
puts
puts ([suite] + BayesianCommonBenchmarks.bench_range).join("\t")
end
def after_suite(suite)
end
def report
super
puts
puts('Finished in %.5fs' % total_time)
print('%d tests, %d assertions, ' % [count, assertions])
color = failures.zero? && errors.zero? ? :green : :red
print(send(color) { '%d failures, %d errors, ' } % [failures, errors])
print(yellow { '%d skips' } % skips)
puts
end
end
Minitest::Reporters.use! BenchmarkReporter.new
def self.bench_range
(Minitest::Benchmark.bench_exp(1, MAX_RECORDS) << MAX_RECORDS).uniq
end
def insufficient_data?
@data.length < MAX_RECORDS
end
def bench_train
assert_performance_linear do |n|
n.times do |i|
parts = @data[i].strip.split("\t")
@classifiers[n].train(parts.first, parts.last)
end
end
end
def bench_train_untrain
assert_performance_linear do |n|
n.times do |i|
parts = @data[i].strip.split("\t")
@classifiers[n].train(parts.first, parts.last)
end
n.times do |i|
parts = @data[i].strip.split("\t")
@classifiers[n].untrain(parts.first, parts.last)
end
end
end
def bench_train_classify
assert_performance_linear do |n|
n.times do |i|
parts = @data[i].strip.split("\t")
@classifiers[n].train(parts.first, parts.last)
end
n.times do |i|
parts = @data[i].strip.split("\t")
@classifiers[n].classify(parts.last)
end
end
end
end
|