On 16/08/2012 05:45, Chris Travers wrote:
Hi;I have had a few customers asking for significant speedups and after some profiling have determined that a lot of the cost is with loading modules many of which have costly dependencies. In a CGI environment these are reducing performance. The good news is that this is a constant cost so as your database grows it will not get worse. The bad news is that as long as we are in a CGI environment, the performance will not get better.Right now I am completing a port of LedgerSMB trunk (to be 1.4) to Starlet/Plack. I expect to have this finished up today. I am having a few issues I need to get fixed. After that I will backport to 1.3 and make it available as an add-on. Aside from the problems, I have seen a very large performance increase with LedgerSMB running in this environment. After this is stable, I will tackle Starman (which strangely is giving me different errors) and maybe an FCGI wrapper.How interested are people in this? Best Wishes, Chris Travers
Hi folks, I have spoken to Chris about this a little offlist, so I just want to stress that this is meant to be a positive sounding question!
What kind of speeds are you currently seeing page render requests with Plack/Starlet? I just want to jump in with an abstract benchmark, but we should be aiming to get all screens which do trivial backend processing to be performing in the sub 100ms response time frame. In fact for trivial screens on a sensible sized box we really should be seeing sub 50ms response times.
As a data point I am currently working on a mojolicious (perl) web configuration interface for an embedded (ish) box which runs on a 500Mhz Geode (Alix). This generates real web pages in around 80-120ms despite the rather wimpy processor (those are "to the browser" speeds, not just rendering speed). I haven't benchmarked on a proper machine, but roughly this machine benchmarks at around 10% of my Q6600 2.4Ghz machine (single threaded).
I'm not sure if you have looked at Mojolicious, but it's now a very mature and flexible toolkit for building all kinds of web services. The code is fantastically clear and concise and well worth a look for inspiration. Basically all of its features are simple packages and have been implemented in a remarkable simple fashion. It does seem to steer a decent line between "opinionated" and "flexible"
I would recommend it as an interesting option for LSMB, not least because it's more of a "VC" than an "MVC" system, you are left to implement the "M" yourself. It also provides a lot of the plumbing for templating systems, ajax, pjax, webservices, etc. It's such an easy architecture to work with it's likely a potential "drop in" change...
Cheers Ed W