Class | MiniTest::Unit::TestCase |
In: |
lib/minitest/benchmark.rb
lib/minitest/unit.rb |
Parent: | Object |
Returns a set of ranges stepped exponentially from min to max by powers of base. Eg:
bench_exp(2, 16, 2) # => [2, 4, 8, 16]
Returns a set of ranges stepped linearly from min to max by step. Eg:
bench_linear(20, 40, 10) # => [20, 30, 40]
Specifies the ranges used for benchmarking for that class. Defaults to exponential growth from 1 to 10k by powers of 10. Override if you need different ranges for your benchmarks.
See also: ::bench_exp and ::bench_linear.
Defines test order and is subclassable. Defaults to :random but can be overridden to return :alpha if your tests are order dependent (read: weak).
Runs the given work, gathering the times of each run. Range and times are then passed to a given validation proc. Outputs the benchmark name and times in tab-separated format, making it easy to paste into a spreadsheet for graphing or further analysis.
Ranges are specified by ::bench_range.
Eg:
def bench_algorithm validation = proc { |x, y| ... } assert_performance validation do |x| @obj.algorithm end end
Runs the given work and asserts that the times gathered fit to match a constant rate (eg, linear slope == 0) within a given threshold. Note: because we‘re testing for a slope of 0, R^2 is not a good determining factor for the fit, so the threshold is applied against the slope itself. As such, you probably want to tighten it from the default.
See www.graphpad.com/curvefit/goodness_of_fit.htm for more details.
Fit is calculated by fit_linear.
Ranges are specified by ::bench_range.
Eg:
def bench_algorithm assert_performance_constant 0.9999 do |x| @obj.algorithm end end
Runs the given work and asserts that the times gathered fit to match a exponential curve within a given error threshold.
Fit is calculated by fit_exponential.
Ranges are specified by ::bench_range.
Eg:
def bench_algorithm assert_performance_exponential 0.9999 do |x| @obj.algorithm end end
Runs the given work and asserts that the times gathered fit to match a straight line within a given error threshold.
Fit is calculated by fit_linear.
Ranges are specified by ::bench_range.
Eg:
def bench_algorithm assert_performance_linear 0.9999 do |x| @obj.algorithm end end
Runs the given work and asserts that the times gathered curve fit to match a power curve within a given error threshold.
Fit is calculated by fit_power.
Ranges are specified by ::bench_range.
Eg:
def bench_algorithm assert_performance_power 0.9999 do |x| @obj.algorithm end end
To fit a functional form: y = ae^(bx).
Takes x and y values and returns [a, b, r^2].
See: mathworld.wolfram.com/LeastSquaresFittingExponential.html
Enumerates over enum mapping block if given, returning the sum of the result. Eg:
sigma([1, 2, 3]) # => 1 + 2 + 3 => 7 sigma([1, 2, 3]) { |n| n ** 2 } # => 1 + 4 + 9 => 14