Der folgende Code resultiert in slow1 = 1323 ms
, slow2 = 1311 ms
und fast = 897 ms
. Wie ist das möglich? Hier"verschachtelte wenn" versus "wenn und" Leistung unter Verwendung von F #
: Nested or not nested if-blocks? sie erwähnen, dass
Jeder moderne Compiler, und dass ich alles in den letzten 20 Jahren gebaut bedeuten, werden diese auf den gleichen Code kompilieren.
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
haben Sie es im Freigabemodus versucht? –
Ja. Auch jede CPU, X86 und X64. Im Debug-Modus werden beide Versionen gleichermaßen langsam (3083 ms). –
Ich muss sagen, dass das ebenso langsame Ergebnis viel mehr "Sinn" macht als die verschiedenen ... –