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

From: Valeriy Onuchin (Valeri.Onoutchine@cern.ch)
Date: Sat May 04 2002 - 17:26:49 MEST


 Hi Ashley,
I'd like to summurize our internal mail-exchange

 - At very beginnig PHP was designed to have better perfornmance
   than competitive projects like  ASP,mod_perl etc.

 - CINT was mostly designed  to be complient with C++, so
   in many cases CINT is not very efficient. The best way to  
   "comensate" it is using code compiled with ACLiC

To achieve the best performance with Carrot follow simple rules:

0. do not use redirected stdout

	http://carrot.cern.ch/CarrotExamples/tutorial/tut0-3.html
 
1. wherever it's possible use  buffered  output ( do not use *.chtml files )

        http://carrot.cern.ch/CarrotExamples/tutorial/tut0-9.html

2. wherever it's possible compile and use compiled code
   
        http://carrot.cern.ch/CarrotExamples/tutorial/tut0-6.html

3. wherever it's possible use  server-side cached scripts

   	http://carrot.cern.ch/CarrotExamples/tutorial/tut6-1.chtml

 compiled and server-side cached pages have the same "efficiency" as static pages

4. use ApacheBench.C script to compare PHP and Carrot generated pages

  	http://carrot.cern.ch/CarrotExamples/ApacheBench.C


Thanks.	Regards.	Valeriy
 

Ashley Cambrell wrote:
> 
> (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