Mantis Bugtracker

Viewing Issue Advanced Details Jump to Notes ] View Simple ] 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 Platform
Status closed   OS
Projection none   OS Version
ETA none Fixed in Version 4.0.0 Product Version 3.2.0
  Product Build
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.

Steps To Reproduce
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