Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:1862 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 85515 invoked from network); 21 May 2003 16:53:15 -0000 Received: from unknown (HELO carmine.bestweb.net) (209.94.102.73) by pb1.pair.com with SMTP; 21 May 2003 16:53:15 -0000 Received: from [192.168.1.101] (ip216-179-71-153.cust.bestweb.net [216.179.71.153]) by carmine.bestweb.net (Postfix) with ESMTP id 2311823109; Wed, 21 May 2003 11:53:15 -0500 (EST) To: "Brian J. France" Cc: internals@lists.php.net In-Reply-To: <20030521093640446007.GyazMail.list@firehawksystems.com> References: <20030521093640446007.GyazMail.list@firehawksystems.com> Content-Type: text/plain Organization: Message-ID: <1053530841.2177.51.camel@hasele> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.4 Date: 21 May 2003 11:27:21 -0400 Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] smart_str performance From: sterling@bumblebury.com (Sterling Hughes) Switched it to avoid a copy on convert_to_string(). Performance in PHP5 now beats the previous version. -Sterling On Wed, 2003-05-21 at 12:36, Brian J. France wrote: > This was a email I sent to Rasmus and another co-worker a while ago and forgot > to post the question to the list. I just saw a commit converting zlib to > smart_str and figured I would send it now. > > Comments? > > Brian > > ---- > I think I found what you were looking for yesterday. implode has change > between 4.3 and 4.2. 4.2 does the double pass while 4.3 has changed to use a > new smart_str struct with smart_str_appendl function (a struct and function > calls around what I was doing in my extension). I decided to run some > quick tests and here is what I have found: > > for ( $i=0; $i < $count; $i++ ) { > $arr[] = rand_string_function(); // 12 characters > } > > $start = gettimeofday(); > $str = implode( "", $arr ); > $end = gettimeofday(); > printf( "%8.8d: %8.8f\n", $count, time_diff( $start, $end ) ); > > give this output: > > 4.3: > 1: 0.00005100 > 2: 0.00002800 > 5: 0.00003700 > 10: 0.00006000 > 100: 0.00045600 > 1000: 0.00478600 > 10000: 0.06507500 > 100000: 1.71620700 > > 4.2: > 1: 0.00004700 > 2: 0.00002500 > 5: 0.00002800 > 10: 0.00004000 > 100: 0.00022400 > 1000: 0.00240700 > 10000: 0.03677200 > 100000: 0.37068200 > > While below 10 items I am sure it is hard to tell the difference, but it is > slower in all cases. Any clue why one item is slower than two or even five? > > Brian -- "First they ignore you, then they laugh at you, then they fight you, then you win." - Gandhi