an addition test
Richard Crispin
rcrispin at watarts.uwaterloo.ca
Tue Dec 18 15:32:01 EST 2001
Hi All
I have a program that summarizes some log files. One of the things
it does is to add up all of the bytes sent for each record. I found
this to be painfully slow. I was investigating a way to speed it up
(see the scripts listed below).
The data I used was a column of 38,497 numbers ranging from 0 to
about 750,000,000. The first method involved adding each line to a
total this took 3,179 ticks. The second method involved using the
return as the item delimiter and adding each item to a total this
took 4,632 ticks. I was not happy with these results so I tried using
the Replace command to replace the returns with a comma and then
using the Sum command. This took an amazing 3 ticks. A considerable
savings.
I love experimenting.
Richard
on mouseup
-- force the 3 methods to be compiled
put AddColumn1(0) into TB1
put AddColumn2(0) into TB2
put AddColumn3(0) into TB3
-- set all the defaults
put 0 into tb1
put 0 into tb2
put 0 into tb3
put fld "Bytes" into theBytes
-- start the timing
put the ticks into s0
put AddColumn1(theBytes) into TB1
put the ticks into s1
put AddColumn2(theBytes) into TB2
put the ticks into s2
put AddColumn3(theBytes) into TB3
put the ticks into s3
-- report the details - Time and Total to be sure the totals are all the same
put s1 - s0 &&tb1 & " " & s2 - s1 &&tb2 & " " & s3 - s2 &&tb3
end mouseup
Function AddColumn1 TheValues
put 0 into thetotal
put the number of lines in Thevalues into MaxL
repeat with L = 1 to MaxL
add line L of theValues to theTotal
end repeat
return theTotal
end AddColumn1
Function AddColumn2 TheValues
put 0 into thetotal
set the itemdelimiter to return
put the number of items in Thevalues into MaxL
repeat with L = 1 to MaxL
add item L of theValues to theTotal
end repeat
return theTotal
end AddColumn2
Function AddColumn3 theValues
replace return with "," in thevalues
set the itemdelimiter to ","
put sum(theValues) into theTotal
return theTotal
end AddColumn3
--
Richard Crispin e-mail:rcrispin at watarts.uwaterloo.ca
Psychology,University of Waterloo phone:Days (519)885-1211 ext. 5669
200 University Ave. W Touch Tone (519)888-4567 5669
Waterloo, Ont. Canada N2L 3G1 FAX:(519)746-8631
---
When I die I'd like to die the way my grandfather died, peacefully in
his sleep... ... not screaming and shouting, like his passengers.
"Boot, you transistorized tormentor! Boot!"~Archibald Asparagus, VeggieTales
"Time, heat and pressure.
The same things that make a diamond also make a waffle."~Scott Meyer
More information about the use-livecode
mailing list