On 2/26/07 1:50 PM, "Jim Ault" <[EMAIL PROTECTED]> wrote: > So the bottom line is that if you are executing this IF or SWITCH you can > expect to waste.... > > Per trip cost is > > 89-74/10,000 > = 15/10,000 milliseconds > = 0.0015 milliseconds > which is 1.5 millionths of a second longer per loop to use IF > > A million here, a million there, and pretty soon your talking real seconds I thought you are talking about accumulating real "dollars" LOL > :-) > > Thanks for the testing work. > > Jim Ault > Las Vegas > > > On 2/26/07 9:35 AM, "Richard Gaskin" <[EMAIL PROTECTED]> wrote: > >> Mark Smith wrote: >>> I just ran a very simple benchmark test, which suggests that if/then >>> goes about 20% faster than switch/case. >> >> I get different results here, but I had to rewrite the if-then test as >> the example posted as it wasn't executing the same logic as the switch >> block. In the "if" example the "c" case didn't fall through to also >> execute the "d" case as it did in the "switch" example, and the "e" case >> wasn't handled at all. >> >> So I wrote a fresh pair of examples that test all possible cases, >> running each full set 10000 iterations. They each produce the same >> logical result at this point, with these times on my MacBook Pro: >> >> if:89ms switch:74ms >> if result:140000 switch result:140000 >> >> The timings aren't surprising given the extra evaluations needed to get >> the same effect using "if" as with the "switch" fall-through behavior. >> >> Please double-check the benchmark handler below to make sure that both >> tests are using equivalent logic, and look for ways the "if-then" might >> be better optimized: >> >> >> >> local sResult >> >> on mouseUp >> -- number of test iterations: >> put 10000 into n >> -- load var with all possible values: >> put "abcde" into s >> -- >> -- >> -- TEST 1: if-then >> put 0 into sResult >> put the millisecs into t >> repeat n >> -- >> repeat for each char tVar in s >> If tVar ="a" or tVar ="b" then >> DoThing1 >> else if tVar = "c" or tVar = "d" then >> if tVar = "c" then >> DoThing2 >> end if >> DoThing3 >> Else If tVar ="e" then >> DoThing4 >> End if >> end repeat >> -- >> end repeat >> put the millisecs - t into t1 >> put sResult into tResult1 >> -- >> -- TEST 2: switch >> put 0 into sResult >> put the millisecs into t >> repeat n >> -- >> repeat for each char tVar in s >> switch tVar >> case "a" >> case "b" >> DoThing1 >> break >> case "c" >> DoThing2 >> case "d" >> DoThing3 >> break >> case "e" >> DoThing4 >> end switch >> end repeat >> -- >> end repeat >> put the millisecs - t into t2 >> put sResult into tResult2 >> -- >> -- show results: >> put "if:"&t1 &"ms"&&"switch:"& t2&"ms"&cr&\ >> "if result:"& tResult1 &&"switch result:"&tResult2 >> end mouseUp >> >> >> >> on DoThing1 >> add 1 to sResult >> end DoThing1 >> >> on DoThing2 >> add 2 to sResult >> end DoThing2 >> >> on Dothing3 >> add 3 to sResult >> end Dothing3 >> >> on DoThing4 >> add 4 to sResult >> end DoThing4 >> >> >> > > > _______________________________________________ > use-revolution mailing list > [email protected] > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-revolution
_______________________________________________ use-revolution mailing list [email protected] Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
