[ROOT] (take 2)TString and += operator

From: Ashley Cambrell (ash@freaky-namuh.com)
Date: Fri May 03 2002 - 16:34:30 MEST


(argh, press ctrl+enter [send])

Hi All,

I've converted the index listing "page" of a thread feedback system to
try and compare PHP and Carrot.  It all work more or less successfully,
but it is a full 5 times slower than PHP. The code hasn't been optimized
as such, mainly using pass by reference where ever possible.  Otherwise
it's a direct line for line conversion.

eg (elapsed time in milliseconds)
PHP:

<font face="Arial"><a name="1135"
href="showPostings.php?first=1135&last=1135&discussionname=CSE3400&article_numbers=100&article_sort_type=desc&article_count_type=articles&article_start=0&type=threaded">Re:
Copy constructor, Assignment operator, Destructor</a> -
(Karen)(2002-04-24 11:24:43.192384+10)</font></td></tr>

Elapsed time: 0
makeThreadedIndex(8): elapsed time: 0
makeThreadedIndex(7): elapsed time: 0
makeThreadedIndex(6): elapsed time: 0
makeThreadedIndex(5): elapsed time: 0
makeThreadedIndex(4): elapsed time: 0
makeThreadedIndex(3): elapsed time: 0
makeThreadedIndex(2): elapsed time: 0
makeThreadedIndex(1): elapsed time: 0

Carrot:
<font face="Arial"><a name="1135"
href="showPostings.php?first=1135&last=1135&discussionname=CSE3400&article_numbers=100&article_sort_type=desc&article_count_type=articles&article_start=0&type=threaded">Re:
Copy constructor, Assignment operator, Destructor</a> -
(Karen)(2002-04-24 11:24:43.192384+10)</font></td><td
bgcolor="#ffffff"><table><tr><td><font
face="Arial"></font></td></tr></table></td></tr>
makeIndexEntry elapsed: 8
makeThreadedIndex(8): elapsed time: 4
makeThreadedIndex(7): elapsed time: 27
makeThreadedIndex(6): elapsed time: 49
makeThreadedIndex(5): elapsed time: 72
makeThreadedIndex(4): elapsed time: 96
makeThreadedIndex(3): elapsed time: 119
makeThreadedIndex(2): elapsed time: 142
makeThreadedIndex(1): elapsed time: 202

makeThreadedIndex is a recursive function that crawls the thread tree.
The database is a parent <-> child type setup

[number = 2, p_number = NULL]
--> [number = 5, p_number = 2]
----> [number = 8, p_number = 5]
etc

I have used pass by reference where ever possible for TStrings (TString
&output).

Is doing doing stacks of:

TString output = "blah blah";
output += Form("some long string with lots of %s", "data");

inheretly slow?  Is there a better way to do it? Or could it be the
recursion? (Or my code / me ;-) )

Thanks people for all your help.

Ashley Cambrell



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:52 MET