Tarek,

My response inline to your:

> 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 ?

let me correct you, it is wheezy.web (not `weezhy`).

Tell me your definition of web framework heavy load. If you have one, we
can try benchmark it.

> 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.

The reason I choose uWSGI is due to minimal possible impact that application
server may cause. Since this component `equally influence` productivity
of each framework it can be to some degree ignored.

> 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.

Can not agree. This is just simple thing. Simple things should run
fast, no doubt. If you can provide a better idea as to which framework
calls to put into benchmark, I will be happy extend the benchmark case.

> 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

The numbers provided in that article are incorrect. They didn't match results
from the file they provide (result.txt in each framework dir) at the time 
of writing.

I have used that idea to re-run things (isolated benchmark; report with 
total time, total number of calls and number of distinct functions used).
See here:

https://bitbucket.org/akorn/helloworld/src/tip/benchmark.py

I will update original post a bit later (to let you comment on this).

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

Improved bigtable benchmark report by adding total number of calls and
number distinct functions used:
https://bitbucket.org/akorn/wheezy.template/src/tip/demos/bigtable/bigtable.py

Original post not updated yet.

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

Sounds not so bad. It points to some specific workloads. Any attempt to 
prioritize
and/or practically implement them?

Thanks.

Andriy


----------------------------------------
> Date: Wed, 26 Sep 2012 11:41:26 +0200
> From: ta...@ziade.org
> To: andriy.kornats...@live.com
> CC: python-list@python.org
> Subject: Re: Fastest web framework
>
> 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