在Ruby 2.1.4 *的IRB中,我发现i**0.5
似乎比Math.sqrt(i)
表现得更快。
def benchmark(n, &block)
start = Time.now
(1..n).each(&block)
Time.now - start
end
结果:
benchmark(1_000_000) { |i| i**0.5 }
=> 0.101748
benchmark(1_000_000) { |i| Math.sqrt(i) }
=> 0.257887
Math.sqrt(i)
代替i**0.5
? Math.sqrt(3015) != 3015**0.5
。)Math.sqrt
只是作为指数实现? *在2.3.0中,这种差异似乎消失了,确实Math.sqrt
的速度提高了约30%。