Thanks for the info. I do have a Linux box, but that one needs uptime. I'll 
need a new one I can screw up while developing on it. I think I'll buy me 
one soon, so I can do these kind of things in the future.

Thanks again,

Ron

"Rasmus Lerdorf" <[EMAIL PROTECTED]> schreef in bericht 
news:[EMAIL PROTECTED]
> Ron Korving wrote:
>> If this is possible, like Dmitry said, with a macro, that would be 
>> interesting. I'm curious what this macro would look like. Personally, I 
>> tend to go for the less readable solution if the performance advantage is 
>> definately there. A little comment to the code should always be able to 
>> clearify it for any reader. But of course, in this case, it is all 
>> entirely up to you guys.
>
> I would suggest taking a sample script that does some of the stuff you are 
> interested in speeding up and running Callgrind on it.  I find that I am 
> terrible at guessing where performance bottlenecks are.  Actual profiling 
> wins every time.  And it really isn't hard to do.  Here is a little primer 
> geared at profiling an Apache/PHP setup.  Doesn't change much for other 
> environments:
>
> 1. If you don't have an x86 Linux box already, get one.
>
> 2. Install valgrind, valgrind-callgrind on the Linux machine
>
> 3. Install GraphViz and kcachegrind on whatever machine you want to view
>    the output on.  I tend to run kcachegind on my Linux box with the
>    DISPLAY set to my Powerbook.  You can even install it on Windows via
>    cygwin and I think there is a Wincachegrind thing out there too. For
>    a really good time, try: fink install kcachegrind on OSX.
>
> 4. Install whatever version of PHP you want to test.  I tend to have
>    multiple versions installed at all times and just flip the LoadModule
>    line around in my httpd.conf file.
>
> 5. callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/apache -X
>
> 6. Hit the server.  I tend to hit it about 1000 times to test
>    per-request stuff.  That drowns out any startup stuff.  It is
>    possible to reset the counters after startup using callgrind-control,
>    but I tend to not bother.
>
> 7. One little quirk is that callgrind creates its output file at
>    startup, but then Apache switches users and it can't dump its output
>    at the end.  So when you are done hitting the server, do a:
>
>       chmod a+rw call*
>
>    from another terminal window in the directory you ran callgrind in to
>    make sure it can write its output.
>
> 8. Hit control-C in the callgrind terminal window
>
> 9. Congratulations, you now have a callgrind dump.  Fire up kcachegrind
>    in the same directory and you should see all sorts of pretty
>    pictures.
>
> It might not be a bad idea to create a repository of callgrind dumps. They 
> are completely portable and can be navigated by any kcachegrind anywhere. 
> If enough people run these every now and then, we can catch performance 
> regression quickly.
>
> -Rasmus 

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to