Re: smart_str performance
| From: | Rasmus Lerdorf | Date: | Wed, 21 May 2003 17:05:53 +0000 |
| Subject: | Re: smart_str performance | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-1863@lists.php.net to get a copy of this message | ||
This seems like a trivial bug fix to me. Having implode() get
significantly slower from 4.2 to 4.3 doesn't make any sense to me.
-Rasmus
On 21 May 2003, Sterling Hughes wrote:
> 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
>