Ben array.min
yavaş görünüyor fark, bu yüzden kendi naif uygulanması karşı bu test yaptım:Neden array.min çok yavaş?
require 'benchmark'
array = (1..100000).to_a.shuffle
Benchmark.bmbm(5) do |x|
x.report("lib:") { 99.times { min = array.min } }
x.report("own:") { 99.times { min = array[0]; array.each { |n| min = n if n < min } } }
end
sonuçları:
Rehearsal -----------------------------------------
lib: 1.531000 0.000000 1.531000 ( 1.538159)
own: 1.094000 0.016000 1.110000 ( 1.102130)
-------------------------------- total: 2.641000sec
user system total real
lib: 1.500000 0.000000 1.500000 ( 1.515249)
own: 1.125000 0.000000 1.125000 ( 1.145894)
Şok oldum. Kendi uygulamamın each
aracılığıyla bir bloğu nasıl çalıştırabilmesi, yerleşik girişi nasıl yenebilir? Ve o kadar çok yendi?
Bir şekilde yanlış mıyım? Yoksa bu bir şekilde normal mi? Kafam karıştı.
Benim Yakut versiyonu, Pro, Windows 8.1 üzerinde çalışan
:
C:\>ruby --version
ruby 2.2.3p173 (2015-08-18 revision 51636) [i386-mingw32]
Sonuçlarim oldukça farklı https://gist.github.com/weppos/3411eafc2c52e69ec751 –
Yani sizin için eşit derecede hızlılar. Hala beni şaşırtıyor. Hangi versiyona sahipsin? 2.2.2p95'im var, şimdi 2.3'e yükselecek ve tekrar test edeceğim. –
Elbette 2.2.3. Bunu şimdi yaptım ama yine de aynı şeyi gözlemliyorum. –