Nếu bạn định chạy điểm chuẩn, hãy tận dụng các công cụ dựng sẵn và giảm thử nghiệm ở mức tối thiểu cần thiết để kiểm tra những gì bạn muốn biết.
Bắt đầu với Fruity, cung cấp rất nhiều thông tin tình báo để chuẩn của nó:
require 'fruity'
compare do
plus { [] + [4, 5] }
concat { [].concat([4, 5]) }
end
# >> Running each test 32768 times. Test will take about 1 second.
# >> plus is similar to concat
Khi điều này là đủ gần để không thực sự lo lắng về, Fruity sẽ cho chúng tôi biết họ đang "tương tự".
Vào thời điểm đó Ruby built-in Benchmark lớp có thể giúp:
require 'benchmark'
N = 10_000_000
3.times do
Benchmark.bm do |b|
b.report('plus') { N.times { [] + [4, 5] }}
b.report('concat') { N.times { [].concat([4,5]) }}
end
end
# >> user system total real
# >> plus 1.610000 0.000000 1.610000 ( 1.604636)
# >> concat 1.660000 0.000000 1.660000 ( 1.668227)
# >> user system total real
# >> plus 1.600000 0.000000 1.600000 ( 1.598551)
# >> concat 1.690000 0.000000 1.690000 ( 1.682336)
# >> user system total real
# >> plus 1.590000 0.000000 1.590000 ( 1.593757)
# >> concat 1.680000 0.000000 1.680000 ( 1.684128)
Thông báo các thời điểm khác nhau. Chạy thử nghiệm một lần có thể dẫn đến kết quả gây hiểu lầm, do đó hãy chạy thử nhiều lần.Ngoài ra, hãy đảm bảo rằng các vòng lặp của bạn dẫn đến thời gian không bị vướng vào tiếng ồn nền do quá trình khởi động.
Nguồn
2014-05-20 15:54:01
FYI :) http://www.ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc /Benchmark.html –
http://www.joelonsoftware.com/articles/fog0000000319.html – Fuser97381