Benjamin Hitz wrote:
Well... OK, it's not MUCH slower, but we also added some new modules that use DBIx::Class... and on a 120 table database THAT is slow to load (2sec).

Dumping DBIx::Class would also be an option, but it's still not particularly zippy with plain CGI/
(main page does ALOT of queries, and they are often quite complicated)

Are you loading your DBIx::Class classes before you start up? Depending on your setup it might be querying the database tables to determine which columns exist, etc so set up your classes. So if you preloaded that you wouldn't get that hit on every request. I don't use DBIx::Class but I assume it's like other ORMs.

Will consider this.  The only globals are:
a) a couple of constant hashes
b) a bunch of "use constants"
a) C::A::P::TT->tt_config*

Can you leave global constants here, I do I have to shove them into the object?

Constants should be just fine. And anything attached to a namespace is probably ok too. Just as long as your code isn't dependent on those globals being unitialized on every request. But if you can run it under fastcgi, I assume you can run it under mod_perl very easily.

* I call tt_config as a class method as recommended in the POD section "SINGLETON SUPPORT".
It mentions:
"So to improve the efficiency of Template Toolkit, we should keep the object (and hence all the compiled templates) in memory across multiple requests. This means you only get hit with the startup cost the first time the TT object is created"

But I don't see how putting this in the superclass actually does this, in a vanilla (NON CACHED) CGI app where a C::A object is instantiated, ->run() and then destroyed. What difference does it make under namespace the tt object exists? Assuming you don't run tt_config at each level of the hierarchy (which you would have to be pretty silly to do)

If you call it as a class method then the TT object is associated with the Class (which persists between requests in a persistant environment) not the object (which does not persist between requests).

As a point of clarification, most of the relevant C:A objects are in my system are:

WWW::Reports::LocusReport::LocusSummary ISA LocusReport
WWW::Reports::LocusReport:: ISA Reports
WWW::Reports ISA CGI::Application

yay extraneous plural!

So is the "singleton support" comment only relevant in a cached env like mod_perl or FCGI?

Yes.

--
Michael Peters
Plus Three, LP


#####  CGI::Application community mailing list  ################
##                                                            ##
##  To unsubscribe, or change your message delivery options,  ##
##  visit:  http://www.erlbaum.net/mailman/listinfo/cgiapp    ##
##                                                            ##
##  Web archive:   http://www.erlbaum.net/pipermail/cgiapp/   ##
##  Wiki:          http://cgiapp.erlbaum.net/                 ##
##                                                            ##
################################################################

Reply via email to