以下代码导致slow1 = 1323 ms
,slow2 = 1311 ms
和fast = 897 ms
。这怎么可能?
这里:嵌套或不嵌套的 if 块?他们提到
任何现代编译器,我的意思是在过去 20 年中构建的任何东西,都会将它们编译成相同的代码。
let s = System.Diagnostics.Stopwatch()
let mutable a = 1
s.Start()
for i in 0 .. 1000000000 do
if i < 0 then
if i < 0 then
a <- 4
printfn "fast = %d" s.ElapsedMilliseconds
s.Restart()
for i in 0 .. 1000000000 do
if i < 0 && i < 0 then
a <- 4
printfn "slow1 = %d" s.ElapsedMilliseconds
s.Restart()
for i in 0 .. 1000000000 do
if i < 0 & i < 0 then
a <- 4
printfn "slow2 = %d" s.ElapsedMilliseconds