At PyCon some people have suggested that they would like the ability
to switch off some web2py functionality to make it faster. I never
thought of this being an issue because I do not think web2py does much
outside models/views and controllers.
I run a lot of tests today using a barebone

    def index(): return 'hello world'

controller (no view, no model) and I discovered, to my surprise that
even in this simple case, web2py spends huge amount of time saving
sessions even if not used (~40ms/request on my laptop). This is also a
problem because if you have many passive visitors web2py creates a lot
of empty session files that fills the sessions folder and slow down
the file system even more.

I made some changes so that sessions are no longer saved if not
modified or empty. For my simple code, the running time went down to
4ms/request. That is 10x than before. That is only 5x the bare Rocket
or Tornado speed (considering it is still checking for session, doing
routing, parsing input and performing a lot of checks, and a lot of
other stuff).

I do not think it should break anything and you should feel it
snappier immediately. Give it a try and let me know.

Try run ab -n 1000 with both web2py 1.93.1 and trunk for your app. Let
me know what you get.

Enjoy!

Massimo

Reply via email to