CONSTANT = 1000000000000000000
array = (1..CONSTANT).to_a
start = Time.now
array.each do |i|
if 1000 < i < CONSTANT * 9 / 10
elsif i > CONSTANT * 9 / 10
else
end
end
finish = Time.now
puts "Running time: #{finish - start} seconds"
Run Code Online (Sandbox Code Playgroud)
我编写了上面的脚本,试图找出通过重新排序控制分支可以节省多少时间.该脚本在运行后立即冻结我的机器,无法通过CTL + C终止.有人可以指出那里发生了什么吗?
您正在创建一个您甚至不需要的巨大阵列.这迫使你的机器开始分页(它将占用64位地址空间的5%,你的机器肯定没有那么多的RAM).你的代码没有进入循环(if语句中的条件不是有效的ruby).
CONSTANT = 1000
# start with something small, then increase by 10
# 10000000 works for me.
start = Time.now
CONSTANT.times do |i|
if 1000 < i && CONSTANT * 9 / 10
elsif i > CONSTANT * 9 / 10
else
end
end
finish = Time.now
puts "Running time: #{finish - start} seconds"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |