Dear Alek,

Thanks for the tips. The implode one seems to work pretty well, on a
synthetic test it is ~4-5 times faster than .= The substr_replace() seems to
be much worse than the original .=, I suppose because of returninng the
whole string in each call; the result should be much better with a
var-parameter version...

Thanks again, Peter

-----Original Message-----
From: Alek Andreev [mailto:[EMAIL PROTECTED]]
Sent: Monday, December 31, 2001 2:35 PM
To: Peter Illes
Subject: Re: [PHP-WIN] Re: Performance tuning #2


There are two ways to do that:
Method 1: Add each new part of the result to an array and when it's done,
implode() the array to get the resulting string.
    Example: (get_data is your custom function)
    while($data = get_data()) {
        $resultA[] = $data;
    }
    $result = implode($resultA,'');
Method 2: Create an empty string ( $buffer = str_pad('',1024); ) and replace
parts of it with {$data = get_data(); $buffer =
substr_replace($buffer,$data,$i,$i+strlen($data)); $i += strlen($data);}.
This is not going to be pretty quickly unless PHP optimizes it, but it's
worth a try because in the best case, it can be reduced down to a single
memcpy(); If you had a function like substr_replace() that updated the
parameter, instead of returning the new string, it would surely work.

--
Regards,
Alek Andreev
[EMAIL PROTECTED]
----- Original Message -----
From: "Peter Illes" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, December 30, 2001 5:01 PM
Subject: [PHP-WIN] Re: Performance tuning #2


> Some more details:
>
> We are implementing a Web Services server (essentially SOAP server) in PHP
> and one of the calls has to return a data packet as XML so we want to
> accumulate the response in a string variable and then return it
(optionally
> logginig it for security reasons).
>
> We would like to avoid using external files for the accumulation, since we
> need some good performance and typically disk v.s. memory cannot compete
> (the server has enough RAM;-).
>
> "Peter Illes" <[EMAIL PROTECTED]> wrote in message
> [EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> > Hi,
> >
> > This is the second post of this problem since I did not get any answer
for
> > the first. Please, could someone out there help? Thanks in advance...
> >
> > I wonder if there is any performance tuning newsgroup/faq/whatever
related
> > to PHP. I searchead to no avail...
> >
> > Anyway, my current mind boggler is: we are accumulating a large (~400k)
> XML
> > response in a string before sending it out by adding little pieces a
time
> > (like 10-20 chars). Now this results in  very bad performance -- most
> > probably due to the fact that the string is enlarged/re-allocated
> thousands
> > of times. I would love to pre-allocate a big buffer for the string so
that
> > performance gets better (something like SetLength() in Delphi). How can
I
> do
> > this?
> >
> > Xuse me if the answer is much too trivial, I'm a newbie in PHPland :-)
> >
> > Thanks for any suggestion,
> >
> > Peter
> >
> >
> >
> >
>
>
>
> --
> PHP Windows Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
>
>
>





-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to