两种方法都计算ruby调用和运行代码块所需的时间。我没有看到为什么这两种方法应该返回不同结果的任何原因。
methodone给了我:1.000135157
methodtwo给了我:1.000108267
我是个菜鸟,我甚至做得对吗?请告诉我。
def methodone(a)
start = Time.now
a.call
result = Time.now - start
end
def methodtwo(a)
start_time = Time.now
a.call
end_time = Time.now
result = end_time - start_time
end
a = Proc.new do {}
end
p methodone(a)
p methodtwo(a)
答案 0 :(得分:2)
您始终无法获得相同的输出,因为计算机上运行的其他进程可能会减少或更多地使用计算机的CPU,并且可能会发生一些缓存和解释程序优化。对于这种简单的方法,您只需一次通过就无法对它们进行可靠的计时。如果你想对这样的东西进行基准测试,最好是数千次或数百次,然后取平均值。这将产生更一致的结果,因为"噪音"外部因素被取消了。
答案 1 :(得分:1)
你不应该期望它们完全一样。 Ruby流程之外总会有一些会影响性能的事情。您应该考虑误差幅度,例如0.1%
<?php
$imagesDir = __DIR__ . '/4611416038/';
$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$randomImage = $images[array_rand($images)];
//Output
$data = file_get_contents($randomImage);
ob_clean();
header("Content-Type: image/jpeg"); //Make browser recorgnize it as image
echo $data;
?>