[wp-hackers] GSoC Project: Performance Pre-application
wordpress at neodude.net
Sun Mar 23 03:01:56 GMT 2008
On Mar 22, 2008, at 10:58 AM, Mahmoud Al-Qudsi wrote:
>> This framework can take a form similar to a lot of the code in
>> wordpress-tests/wp-testlib. My primary concern here is to make
>> performance tuning relatively trivial to do, and hence can be done
>> regularly, perhaps as each release's development is drawing to a
>> close. I'm not sure if wordpress's development process needs this; it
>> was, if anything, just a neat idea.
> But you need a baseline. Assuming the goal of the project is to
> improve the *current* codebase and /not/ just to make sure it
> doesn't get any worse; then you'll need to first fix the code *then*
> continuously build/test/monitor its performance, no?
The idea (which I did not express very well) was to have that
framework; then a set of 'definitive' benchmarks to run, which gives a
bunch of numbers. Let's run that on, say, the final 2.5 release. Would
that be a baseline to work from?
Once the framework is there it is easier to quantify just how much
better (or worse) a change is, be it core patch or plugin. Then the
actual work can start being done, in a similar way that wp-testlib has
first to be written before wp-testcases could be written?
I wouldn't be surprised if someone has already written some sort of
php performance testing 'suite' - that could readily be adapted, if
>> It could also handle figuring out which sections of the codebase
>> scale well; i.e., what happens when you comment on a post with 100
>> other comments? 10000 other comments?
> With regards to your questions about *database*-scaling, the answer
> is quite simple: so long as you're using a modern RDBMS and you have
> decently-coded queries (i.e. no recursive nested queries, etc.) the
> only difference should be in the time it takes for the response to
> be sent to the PHP parser and for the PHP parser to circle through
> that many records in linear progression. I've seen it myself on my
> own blog, which has posts from 0 to 1000 comments.
Eek, bad example; but maybe I'm chasing an empty category. I wonder,
the description on the gsoc2008 codex page (which I assume you
wrote?), what does "don't scale well" mean? I took it to mean load
scaling, i.e. what happens when there are thousands of this request
rather than dozens.
Since you've run some well-hit wordpress blogs, you'd have a good idea
where to start from?
>> I believe xdebug can output files that can be visualized with
>> KCachegrind; then I'd love to spend some time optimizing the most
>> obvious bottlenecks. Not sure if that is worth including in the scope
>> of a GSoC project?
>> I think the idea of having a 'build' system that combines files
>> together is worth having; opening the hundred-odd files that
>> includes must be quite expensive? This is obviously a question that
>> can easily be answered by testing with the framework.
> More importantly: *WHY* are we opening/including all those millions
> of files when we only a minor fraction of them to do what we
> currently need? It'd be better to (RE: the codex) only include/merge
> files needed for each single operation and then call that
> (operation,file) tuple when requests are made.
That's an excellent idea. If there was some way to combine those files
before deployment, in a way that keeps wordpress's architecture
relatively ummodified for plugin compatibility, and also maintain APC/
etc opcode caching compatibility? It sounds like a tall order.
> I just posted about the Performance project for WordPress GSoC 2008
> on my blog; not much details, but if anyone is interested:
Are you still interested in releasing PerformancePress? Or, not
necessarily 'releasing' it, but making its code available in some form
so interested parties (e.x. me) could pursue and find out what you've
Thanks for your comments!
More information about the wp-hackers