On 9/26/12 11:26 AM, Andriy Kornatskyy wrote:
Tarek,

Thank you for the response back. Yes, your idea is pretty clear to me. The 
point is that higher workload you put in your application business logic, 
repository, backend, whatever... less you will see in final results comparison. 
This is obvious and we, as technical people, very well understand this 
(somebody even laugh).

I am happy somebody got a good laugh, I had a myself a good coffee :)

The reality is that not all web applications do heavy CPU computations and/or 
experience IO delays (due to response from database running a query over table 
that has no index, let say), some use caches, some split jobs to be run in 
background, some parallel them... I have to state that simple things must 
perform really fast to give more room for one that are not so. That in turn 
makes your infrastructure more effective. Some prefer to add a box, some see 
that a likely to be a problem further it goes. The good thing - you have a 
choice, you are not locked, and as result you are responsible for the 
effectiveness of the system you build today and definitely next one.

Take care.

Andriy

You are not getting my point. What happens to weezhy or XXX framework when you are running it in a given stack, under heavy load ?

There are many interactions that may impact the behavior of the stack - most of them are in the web server itself, but they can be things in the framework too, depending on the architectural choice.

And you will not know it with an hello world app. To put it more bluntly, your benchmark is going to join the big pile of hello worlds benchmarks that are completely meaningless.

If you want to prove that weezhy is faster than another py framework, because, I dunno, the number of function calls are smaller ? then you need to isolate this and
do a different kind of bench.

Have a look at http://plope.com/pyroptimization , it's a good example

Same thing for the raw speed of your templating engine - isolation is required.

One good read: http://blog.ianbicking.org/2010/03/16/web-server-benchmarking-we-need/


Cheers
Tarek



----------------------------------------
Date: Wed, 26 Sep 2012 11:08:19 +0200
From: ta...@ziade.org
To: andriy.kornats...@live.com
CC: python-list@python.org
Subject: Re: Fastest web framework

On 9/25/12 3:21 PM, Andriy Kornatskyy wrote:
Tarek,

With all respect, running benchmark on something that has sleeps, etc is pretty 
far from real world use case. So I went a little bit different way.
That's not a good summary of what the function does. It does not just
sleep. It does some I/O and CPU bound tasks. The sleep is here to
simulate a blocking I/O call, besides the DB calls.

The whole function tries to simulate a real application, unlike printing
'Hello World' - to put the stack under realistic conditions.

The multiplication is cached by the processor, but will still push some
CPU work on every call.

Here is a live demo (a semi real world web application) that comes with 
wheezy.web framework as a template:

http://wheezy.pythonanywhere.com/

I have implemented it in a way that it uses one web framework (wheezy.web) and 
various template engines (jinja2, mako, tenjin, wheezy.template and 
wheezy.template with preprocessor)... Please see the following post under `Real 
World Example` section:

http://mindref.blogspot.com/2012/07/python-fastest-template.html

Source code here:

https://bitbucket.org/akorn/wheezy.web/src/tip/demos/template

The real world example shows the difference between template engines 
implementing the same things. The same applies to web frameworks (more or less 
depending on your choice).

Thanks.
Great, thanks for the update ! -- that's cool to bench the template
engines, but this is still not what I had in mind.

What I had in mind was to try each one of the framework with an
application that does things, and see how the whole stack reacts on high
load.

But I guess we have different goals - wheezy seems really fast, congrats.


Cheers
Tarek

Andriy


----------------------------------------
Date: Mon, 24 Sep 2012 13:50:31 +0200
From: ta...@ziade.org
To: python-list@python.org
Subject: Re: Fastest web framework

On 9/23/12 11:19 AM, Andriy Kornatskyy wrote:
I have run recently a benchmark of a trivial 'hello world' application for 
various python web frameworks (bottle, django, flask, pyramid, web.py, 
wheezy.web) hosted in uWSGI/cpython2.7 and gunicorn/pypy1.9... you might find 
it interesting:

http://mindref.blogspot.com/2012/09/python-fastest-web-framework.html

Comments or suggestions are welcome.

Thanks.

Andriy Kornatskyy

I would try this with a web app that does more than 'Hello World'

You may argue that you're just trying the server stack, but that's not
realistic because you don't really measure how the server behaves with a
real app.

Have a look at
https://github.com/mozilla-services/chaussette/blob/master/chaussette/util.py#L188

(setup_bench and teardow_bench have to be run on startup and tear down
of the server)

I would be curious to see how things goes then

Cheers
Tarek
--
http://mail.python.org/mailman/listinfo/python-list
                                        

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to