If I recall correctly, from my testing, the model is only really loaded once
the first time the app is accessed. So Massimo is correct that loading is
not the issue. The issue is that the model needs to be executed for every
request, so breaking your models up will really help with this. Also, you
may be able to throw a couple of performance tricks in there by
conditionally loading tables based on the request object.
For example, if you have a 'contact' table that needs to be shared between
the 'mail' and the 'address_book' controllers, then instead of making it
global, you could do something like this in the model:
if request.controller == 'mail' or request.controller == 'address_book':
db.define_table('contact',
Field('name'),
....
)
So if you have a 100 controllers, but only two or three need access to a
table, then this should speed things up.