以下代码的执行结果为
在这里:嵌套或非嵌套if块?他们提到:
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