summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2025-01-09 11:06:38 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2025-01-10 10:19:39 +0900
commitb0d3771bce9dfcffb7467ea34971198cf4b4079e (patch)
tree4fb397c067833d7ca46a39ddba03fa714d721cc0 /test
parent0c3dca6266a94c951a5347d40fbd0993e2902cc6 (diff)
Make benchmark as bundled gems
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/12537
Diffstat (limited to 'test')
-rw-r--r--test/benchmark/test_benchmark.rb167
1 files changed, 0 insertions, 167 deletions
diff --git a/test/benchmark/test_benchmark.rb b/test/benchmark/test_benchmark.rb
deleted file mode 100644
index 2e0c47af75..0000000000
--- a/test/benchmark/test_benchmark.rb
+++ /dev/null
@@ -1,167 +0,0 @@
-# frozen_string_literal: true
-require 'test/unit'
-require 'benchmark'
-
-class TestBenchmark < Test::Unit::TestCase
- BENCH_FOR_TIMES_UPTO = lambda do |x|
- n = 1000
- tf = x.report("for:") { for _ in 1..n; '1'; end }
- tt = x.report("times:") { n.times do ; '1'; end }
- tu = x.report("upto:") { 1.upto(n) do ; '1'; end }
- [tf+tt+tu, (tf+tt+tu)/3]
- end
-
- BENCH_FOR_TIMES_UPTO_NO_LABEL = lambda do |x|
- n = 1000
- x.report { for _ in 1..n; '1'; end }
- x.report { n.times do ; '1'; end }
- x.report { 1.upto(n) do ; '1'; end }
- end
-
- def labels
- %w[first second third]
- end
-
- def bench(type = :bm, *args, &block)
- if block
- Benchmark.send(type, *args, &block)
- else
- Benchmark.send(type, *args) do |x|
- labels.each { |label|
- x.report(label) {}
- }
- end
- end
- end
-
- def capture_bench_output(type, *args, &block)
- capture_output { bench(type, *args, &block) }.first.gsub(/[ \-]\d\.\d{6}/, ' --time--')
- end
-
- def test_tms_outputs_nicely
- assert_equal(" 0.000000 0.000000 0.000000 ( 0.000000)\n", Benchmark::Tms.new.to_s)
- assert_equal(" 1.000000 2.000000 10.000000 ( 5.000000)\n", Benchmark::Tms.new(1,2,3,4,5).to_s)
- assert_equal("1.000000 2.000000 3.000000 4.000000 10.000000 (5.000000) label",
- Benchmark::Tms.new(1,2,3,4,5,'label').format('%u %y %U %Y %t %r %n'))
- assert_equal("1.000000 2.000", Benchmark::Tms.new(1).format('%u %.3f', 2))
- assert_equal("100.000000 150.000000 250.000000 (200.000000)\n",
- Benchmark::Tms.new(100, 150, 0, 0, 200).to_s)
- end
-
- def test_tms_wont_modify_the_format_String_given
- format = "format %u"
- Benchmark::Tms.new.format(format)
- assert_equal("format %u", format)
- end
-
- BENCHMARK_OUTPUT_WITH_TOTAL_AVG = <<BENCH
- user system total real
-for: --time-- --time-- --time-- ( --time--)
-times: --time-- --time-- --time-- ( --time--)
-upto: --time-- --time-- --time-- ( --time--)
->total: --time-- --time-- --time-- ( --time--)
->avg: --time-- --time-- --time-- ( --time--)
-BENCH
-
- def test_benchmark_does_not_print_any_space_if_the_given_caption_is_empty
- assert_equal(<<-BENCH, capture_bench_output(:benchmark))
-first --time-- --time-- --time-- ( --time--)
-second --time-- --time-- --time-- ( --time--)
-third --time-- --time-- --time-- ( --time--)
-BENCH
- end
-
- def test_benchmark_makes_extra_calculations_with_an_Array_at_the_end_of_the_benchmark_and_show_the_result
- assert_equal(BENCHMARK_OUTPUT_WITH_TOTAL_AVG,
- capture_bench_output(:benchmark,
- Benchmark::CAPTION, 7,
- Benchmark::FORMAT, ">total:", ">avg:",
- &BENCH_FOR_TIMES_UPTO))
- end
-
- def test_bm_returns_an_Array_of_the_times_with_the_labels
- [:bm, :bmbm].each do |meth|
- capture_output do
- results = bench(meth)
- assert_instance_of(Array, results)
- assert_equal(labels.size, results.size)
- results.zip(labels).each { |tms, label|
- assert_instance_of(Benchmark::Tms, tms)
- assert_equal(label, tms.label)
- }
- end
- end
- end
-
- def test_bm_correctly_output_when_the_label_width_is_given
- assert_equal(<<-BENCH, capture_bench_output(:bm, 6))
- user system total real
-first --time-- --time-- --time-- ( --time--)
-second --time-- --time-- --time-- ( --time--)
-third --time-- --time-- --time-- ( --time--)
-BENCH
- end
-
- def test_bm_correctly_output_when_no_label_is_given
- assert_equal(<<-BENCH, capture_bench_output(:bm, &BENCH_FOR_TIMES_UPTO_NO_LABEL))
- user system total real
- --time-- --time-- --time-- ( --time--)
- --time-- --time-- --time-- ( --time--)
- --time-- --time-- --time-- ( --time--)
-BENCH
- end
-
- def test_bm_can_make_extra_calcultations_with_an_array_at_the_end_of_the_benchmark
- assert_equal(BENCHMARK_OUTPUT_WITH_TOTAL_AVG,
- capture_bench_output(:bm, 7, ">total:", ">avg:",
- &BENCH_FOR_TIMES_UPTO))
- end
-
- BMBM_OUTPUT = <<BENCH
-Rehearsal ------------------------------------------
-first --time-- --time-- --time-- ( --time--)
-second --time-- --time-- --time-- ( --time--)
-third --time-- --time-- --time-- ( --time--)
---------------------------------- total: --time--sec
-
- user system total real
-first --time-- --time-- --time-- ( --time--)
-second --time-- --time-- --time-- ( --time--)
-third --time-- --time-- --time-- ( --time--)
-BENCH
-
- def test_bmbm_correctly_guess_the_label_width_even_when_not_given
- assert_equal(BMBM_OUTPUT, capture_bench_output(:bmbm))
- end
-
- def test_bmbm_correctly_output_when_the_label_width_is_given__bmbm_ignore_it__but_it_is_a_frequent_mistake
- assert_equal(BMBM_OUTPUT, capture_bench_output(:bmbm, 6))
- end
-
- def test_report_item_shows_the_title__even_if_not_a_string
- assert_operator(capture_bench_output(:bm) { |x| x.report(:title) {} }, :include?, 'title')
- assert_operator(capture_bench_output(:bmbm) { |x| x.report(:title) {} }, :include?, 'title')
- end
-
- def test_bugs_ruby_dev_40906_can_add_in_place_the_time_of_execution_of_the_block_given
- t = Benchmark::Tms.new
- assert_equal(0, t.real)
- t.add! { sleep 0.1 }
- assert_not_equal(0, t.real)
- end
-
- def test_realtime_output
- sleeptime = 1.0
- realtime = Benchmark.realtime { sleep sleeptime }
- assert_operator sleeptime, :<, realtime
- end
-
- # Test that `to_h` returns a hash with the expected data.
- def test_tms_to_h
- tms = Benchmark::Tms.new(1.1, 2.2, 3.3, 4.4, 5.5, 'my label')
- expected_hash = {
- utime: 1.1, stime: 2.2, cutime: 3.3, cstime: 4.4, real: 5.5, label: 'my label'
- }
- assert_equal(expected_hash, tms.to_h)
- end
-end