[Baypiggies] Output generation - (string operations/triple quote/template)
Dennis Reinhardt
DennisR at dair.com
Wed Feb 14 01:44:31 CET 2007
At 03:50 PM 2/13/2007, wesley chun wrote:
>i cannot justify the CPU time and performance
>lost in doing
>malloc()+realloc()+realloc()+realloc()+realloc()+realloc()+realloc()+realloc()+realloc()..
We can quantify this, albeit abstractly. The actual allocation and re-use
of memory is not known to me. The simplest case to consider is once
allocated, memory is never re-claimed, also a worst case. If we allocate a
memory object N units in length, the memory impact is N. If we allocate
this in units of 1 by copy/append (a.k.a tail recursion), the impact is as
bad as
1+2+3+4 ....
or more generally N*(N+1)/2
For moderate N (say =10), the impact is 5.5X worse than allocating a single
block of N. For larger N, the N*(N+1)/2 gets bad fast. If N is less than
10, the impact is better than 5.5X.
A copy/append such as
A += ... [done 30 times]
can be re-expressed as
X += ... [done 10 times]
Y += ... [done 10 times]
Z += ... [done 10 times]
A + X + Y + Z [done once]
In DialogDevil, scanning and processing click actions against the running
processes *is* a CPU drain and I have had to put a lot of optimization work
into that. In SpamAI, I had to pay lots of attention to efficiency of
regular expressions I wrote.
HTML generation simply is not even a blip on the cpu radar screen for
either program, both of which required optimization work.
Regards, Dennis
---------------------------------
| Dennis | DennisR at dair.com |
| Reinhardt | http://www.dair.com |
---------------------------------
More information about the Baypiggies
mailing list