Hi All

I like Drupal, especially after having invested quite a bit of time on it.
But unfortunately Drupal isn't fast.

There are many posts in this forum reporting very slow Drupal performance.
I've read most of them and implemented most of the recommendations,
e.g., APC, memcache, Drupal Page Cache, Drupal Block Cache, disable Update
Status, etc. But the improvement is slight.
We cannot optimize CSS and JS because we are using Private File download.

It is obvious that Drupal is slow. We used Postnuke before and
are now using Xoops and both these CMS are much faster than Drupal.
(yes, we know why Drupal is slow -- because of its hooks system ?)
The problem is really with Drupal. Ok, some may argue that Drupal is
faster than Joomla, and definitely faster than Zope/Plone. But it is still
slow.

Since Drupal has become so popular, isn't it a good time now to look
at the innards of Drupal to speed things up?
Don't want to go into the OOP debate again, but if OOP can improve
performance (I am not sure about this), why not use OOP for the core.
Or write the Drupal core in C or C++ ? This would surely improve speed, right?

Drupal is beginning to go the way of Firefox which has become bloated and
slow in version 3. This would be a pity -- because Drupal is one of the best
CMS around (except for the speed problem)

An aside - I'm not a full-time programmer, but I am curious
why are there no C++ web frameworks ?
why no compiled language web development?
why is speed in web applications not so important?
why should short development cycle be the most important factor?
Most users really get quite impatient when they have to wait for a few seconds
for a page to load or a form to submit.
A few seconds here and there can add up to a lot of time wasted.

Comments

johnlawson’s picture

Most performance bottlenecks are in the communication beween Drupal ( PHP) and the database in my experience. Having a fast executable makes no difference, in my opinion, since the application code is usually not the bottleneck.

The cumulative effect of running lots of small database queries and waiting for a response from the database (where there is a network lag / latency ) is often the culprit .

So look to improving database response time and adopt a sensible caching strategy.

marcvangend’s picture

Taken from http://yuiblog.com/blog/2006/11/28/performance-research-part-1/:

Most performance optimization today are made on the parts that generate the HTML document (apache, C++, databases, etc.), but those parts only contribute to about 20% of the user’s response time. It’s better to focus on optimizing the parts that contribute to the other 80%.

cmgui’s picture

Thank you for the suggestion of improving database response time. I'll look into Mysql caching.

But the problem could be more than database. Run Yslow on any Drupal site and you will get a lot of 'F' grades, e.g, for http requests, Javascript at the top of the page, etc., etc.

cmgui’s picture

Here are the Yslow results of Drupal and Xoops serving
the same content. Drupal score 33. Xoops 56. (the higher the better)

Drupal
Performance Grade: F (33)
F 1. Make fewer HTTP requests
F 2. Use a CDN
F 3. Add an Expires header
F 4. Gzip components
A 5. Put CSS at the top
F 6. Put JS at the bottom
A 7. Avoid CSS expressions
n/a 8. Make JS and CSS external
A 9. Reduce DNS lookups
F 10. Minify JS
A 11. Avoid redirects
A 12. Remove duplicate scripts
F 13. Configure ETags

Xoops
Performance Grade: F (56)
A 1. Make fewer HTTP requests
F 2. Use a CDN
F 3. Add an Expires header
F 4. Gzip components
B 5. Put CSS at the top
B 6. Put JS at the bottom
A 7. Avoid CSS expressions
n/a 8. Make JS and CSS external
A 9. Reduce DNS lookups
C 10. Minify JS
A 11. Avoid redirects
A 12. Remove duplicate scripts
F 13. Configure ETags

--

Drupal 6 out of the box with Garland theme
Performance Grade: F (55)
C 1. Make fewer HTTP requests
F 2. Use a CDN
F 3. Add an Expires header
F 4. Gzip components
A 5. Put CSS at the top
A 6. Put JS at the bottom
A 7. Avoid CSS expressions
n/a 8. Make JS and CSS external
A 9. Reduce DNS lookups
A 10. Minify JS
A 11. Avoid redirects
A 12. Remove duplicate scripts
F 13. Configure ETags

luke101’s picture

if you are worried about performance then I would take a look at umbraco cms. That one is written in .net and it is the fastest cms I have ever seen. Pages load practically instantly. To bad the documentation is bad otherwise I would not be writing this post.

kepesv’s picture

You are using private file download. It's cause huge speed degradation in some use cases.