On Fri, Feb 17, 2012 at 7:55 PM, Kay C Lan <lan.kc.macm...@gmail.com> wrote:
> Guys I thought I'd speed test these. Given that we're dealing in seconds (and therefore integers), the very clever itemoffset idea Peter came up with is unnecessary. Here's a comparison of the three options, with mine tweaked to be similar to my original idea (and to return hours, so it matches the output of the other two). I took the liberty of removing the "max" function from Paul's code, since all it does is restrict the rounding interval to a one minute interval, which was not part of the original spec, and also since this test uses a constant 15 minute interval, completely unused here. I got this on my MacBook: For 1000000 cycles K's solution = 1342ms Paul's solution = 1226ms Geoff's solution = 1095ms Which is to say that, at about 1 million calculations per second, any of these solutions would be fine in practice. gc on mouseUp put 1000000 into tRepeats --to create a list of times to use. --900 is used as fixed 1/4 hour interval put 1329494400 into tStartTime put 900 into tIncrement repeat with i = 1 to tRepeats put (1329494400 + random(36000)) & cr after tStore end repeat --K solution put the millisec into tStartClock repeat for each line tEndTime in tStore put round(((tEndTime + (tIncrement/2) - 1 - \ tStartTime)/tIncrement),0)/(3600/tIncrement) & cr after tStore2 end repeat put the millisec - tStartClock into tTotalTime1 --Paul's max solution put the millisec into tStartClock repeat for each line tEndTime in tStore put round(((tEndTime-tStartTime)/tIncrement)+\ 0.4999,0)/(3600/tIncrement) & cr after tStore3 end repeat put the millisec - tStartClock into tTotalTime2 if (tStore2 <> tStore3) then put "Paul's solution doesn't = K's" & cr after tErrors end if --Geoff's revised mod solution put the millisec into tStartClock repeat for each line tEndTime in tStore put (tEndTime - tStartTime + tIncrement - 1) \ div tIncrement / 4 & cr after tStore4 end repeat put the millisec - tStartClock into tTotalTime3 if (tStore2 <> tStore4) then put "Geoff's solution doesn't = K's" & cr after tErrors end if if (tStore3 <> tStore4) then put "Geoff's solution doesn't = Paul's" & cr after tErrors end if put "For " & tRepeats & " cycles" & cr into R put "K's solution = " & tTotalTime1 & "ms" & cr after R put "Paul's solution = " & tTotalTime2 & "ms" & cr after R put "Geoff's solution = " & tTotalTime3 & "ms" & cr after R put R & tErrors end mouseUp _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode