Mantis Bugtracker

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0002913 [Quercus] minor always 09-08-08 12:36 01-04-09 11:24
Reporter ferg View Status public  
Assigned To ferg
Priority normal Resolution fixed  
Status closed   Product Version 3.2.0
Summary 0002913: quercus precompile load
Description (rep by Steven Grimm)

When I fire up Resin to work with Quercus, the first thing I do is hit a dummy page that is nothing but an include of our standard PHP library suite. Our libraries are pretty huge -- over a thousand files -- and this initial dummy page takes around three minutes to execute the first time as it loads all the .php files I compiled on the previous run. The debug output looks like you'd expect:

[12:16:21.510] {http--8080-6} Quercus[/data/users/sgrimm/www/lib/qrt/qrt.php] loading precompiled page
[12:16:21.524] {http--8080-6} Quercus[/data/users/sgrimm/www/lib/qrt/constants.php] loading precompiled page
[12:16:21.716] {http--8080-6} Quercus[/data/users/sgrimm/www/lib/qrt/utils.php] loading precompiled page
[12:16:21.724] {http--8080-6} Quercus[/data/users/sgrimm/www/lib/qrt/versions.php] loading precompiled page
[12:16:21.815] {http--8080-6} Quercus[/data/users/sgrimm/www/lib/display/feed/platform.php] loading precompiled page
[12:16:22.287] {http--8080-6} Quercus[/data/users/sgrimm/www/lib/display/feed/broadcast.php] loading precompiled page

It would be great if I could speed that up. I don't keep Resin running all the time and it's a bit of a pain to have to wait that long to do anything when I have a little time to spend on Quercus testing.

Is there a way to speed things up as is by tweaking any configuration settings? If not, a couple of possible approaches:

- Load the precompiled pages in the background, the same way compilation is kicked off as a background task, and use interpreted pages in the meantime. Maybe only do that once the number of precompiled pages loaded in a single request exceeds some threshold, so small/simple pages don't have to run any interpreted code.

- Parallelize the loading of compiled pages. I'm running on a 4-core machine but only one of those cores gets used when I'm running this page. Probably the previous item is a prerequisite to this.

Parallelizing would be great for compiling, too, by the way -- if there were multiple compiler threads it would be much faster to arrive at the desired "everything is compiled" state after blowing away the Quercus work directory, which I sometimes need to do after applying a Quercus bugfix.

Thanks! I will probably have some more bug reports for you guys this week (there are still a couple things going wrong in ways I don't understand) but it's looking much better than it used to now.

Additional Information
Attached Files

- Relationships

- Notes
12-17-08 23:48

The experimental patch in the latest Resin code takes my startup time from 90-100 seconds down to 25-30, FYI. That's workable.
01-04-09 11:24

Closing based on successful patch. At some point in the future it can be revisited for further perf improvements.

- Issue History
Date Modified Username Field Change
09-08-08 12:36 ferg New Issue
09-08-08 12:41 koreth Issue Monitored: koreth
12-17-08 23:48 koreth Note Added: 0003669
01-04-09 11:24 ferg Note Added: 0003691
01-04-09 11:24 ferg Assigned To  => ferg
01-04-09 11:24 ferg Status new => closed
01-04-09 11:24 ferg Resolution open => fixed
01-04-09 11:24 ferg Fixed in Version  => 4.0.0

Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
32 total queries executed.
27 unique queries executed.
Powered by Mantis Bugtracker