Path: csiph.com!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!feeds.phibee-telecom.net!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.003 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'case.': 0.05; 'frameworks': 0.05; 'url:bitbucket': 0.05; 'framework.': 0.07; 'welcome.': 0.07; 'url:blog': 0.09; 'python': 0.09; 'itself,': 0.09; 'leaks': 0.09; 'prioritize': 0.09; 'sep': 0.09; 'stack,': 0.09; 'used).': 0.09; 'cc:addr:python-list': 0.10; 'yet.': 0.13; 'component': 0.15; 'sat,': 0.15; 'stack': 0.15; '+0300': 0.16; 'agree.': 0.16; 'bigtable': 0.16; 'bonus:': 0.16; 'boundary.': 0.16; 'cause.': 0.16; 'distinct': 0.16; 'framework,': 0.16; 're- run': 0.16; 'read:': 0.16; 'simulated': 0.16; 'tarek,': 0.16; 'templating': 0.16; 'this).': 0.16; 'url:py': 0.16; 'used:': 0.16; 'wsgi': 0.16; 'later': 0.16; 'memory': 0.18; 'load': 0.19; '(not': 0.20; 'skip:- 40': 0.21; 'bit': 0.21; 'thanks.': 0.21; 'required.': 0.22; 'cc:2**0': 0.23; 'example': 0.23; 'ignored.': 0.23; 'mention': 0.23; 'idea': 0.24; 'cc:addr:python.org': 0.25; 'header:In-Reply-To:1': 0.25; 'extend': 0.26; 'plain': 0.27; 'raw': 0.27; 'correct': 0.28; 'run': 0.28; 'post': 0.28; 'app.': 0.29; 'bad.': 0.29; 'interactions': 0.29; 'pile': 0.29; 'them?': 0.29; 'date:': 0.29; 'definition': 0.29; 'points': 0.29; 'source': 0.29; 'framework': 0.30; 'minimal': 0.30; 'url:2012': 0.30; 'function': 0.30; 'code': 0.31; 'implement': 0.32; 'file': 0.32; 'running': 0.32; 'getting': 0.33; 'comments': 0.33; 'from:addr:live.com': 0.33; 'rid': 0.33; 'point.': 0.33; 'another': 0.33; 'updated': 0.34; 'server': 0.35; 'faster': 0.35; 'fastest': 0.35; 'there': 0.35; 'subject:': 0.36; 'but': 0.36; 'url:org': 0.36; 'smaller': 0.36; 'email addr:python.org': 0.36; "didn't": 0.36; 'should': 0.36; 'possible': 0.37; 'one,': 0.37; '(for': 0.37; 'subject:: ': 0.38; 'degree': 0.38; 'from:': 0.38; 'comment': 0.38; 'some': 0.38; 'things': 0.38; 'several': 0.39; 'application': 0.40; 'your': 0.60; 'most': 0.61; 'kind': 0.61; 'here:': 0.62; 'time,': 0.62; 'email name:python-list': 0.62; 'improved': 0.62; 'provide': 0.62; 'different': 0.63; 'world': 0.63; 'more': 0.63; 'url:blogspot': 0.64; 'behavior': 0.64; 'choose': 0.65; 'results': 0.65; 'total': 0.65; 'due': 0.66; 'email addr:live.com': 0.71; 'sounds': 0.71; 'article': 0.78; 'productivity': 0.78; 'heavy': 0.83; 'benchmark': 0.84; 'fast,': 0.84; 'isolate': 0.84; 'isolated': 0.84; 'to:addr:tarek': 0.84; 'url:03': 0.84; 'your:': 0.84; 'alone.': 0.91; 'url:template': 0.91; 'choice.': 0.93; 'url:16': 0.95; 'charset:windows-1251': 0.97 X-Originating-IP: [194.44.213.194] From: Andriy Kornatskyy To: Tarek Ziade Subject: RE: Fastest web framework Date: Tue, 2 Oct 2012 16:17:40 +0300 Importance: Normal In-Reply-To: References: , , <50604907.6060405@ziade.org>, , , <5062C603.90905@ziade.org>, , , <5062CDC6.40703@ziade.org>, Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginalArrivalTime: 02 Oct 2012 13:17:41.0087 (UTC) FILETIME=[4D030EF0:01CDA0A0] Cc: "python-list@python.org" X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 110 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1349183929 news.xs4all.nl 6928 [2001:888:2000:d::a6]:52262 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:30632 In order to provide more reliable benchmark=2C I get rid of application ser= ver and network boundary. As a result I simulated a valid WSGI request and = isolated calls just to the web framework alone. Also I found interesting to= take a look at total number of calls and unique functions used by correspo= nding web framework. The post has been updated: http://mindref.blogspot.com/2012/09/python-fastest-web-framework.html Isolated benchmark source code is here: https://bitbucket.org/akorn/helloworld/src/tip/benchmark.py I should mention several web frameworks experience huge memory leaks in thi= s=A0benchmark. BONUS: added benchmark for python 3.3 (for the web frameworks that support = it) and plain simple WSGI application (for contrast). Comments or suggestions are welcome. Thanks. Andriy Kornatskyy ---------------------------------------- > From: andriy.kornatskyy@live.com > To: tarek@ziade.org > Subject: RE: Fastest web framework > Date: Sat=2C 29 Sep 2012 12:18:32 +0300 > CC: python-list@python.org > > > Tarek=2C > > 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=2C under heavy load ? > > let me correct you=2C it is wheezy.web (not `weezhy`). > > Tell me your definition of web framework heavy load. If you have one=2C w= e > 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=2C but they can be things in = the > > framework too=2C depending on the architectural choice. > > The reason I choose uWSGI is due to minimal possible impact that applicat= ion > 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=2C 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=2C no doubt. If you can provide a better idea as to which framework > calls to put into benchmark=2C I will be happy extend the benchmark case. > > > If you want to prove that weezhy is faster than another py framework=2C > > because=2C I dunno=2C the number of function calls are smaller ? then y= ou > > need to isolate this and > > do a different kind of bench. > > > > Have a look at http://plope.com/pyroptimization =2C it's a good example > > The numbers provided in that article are incorrect. They didn't match res= ults > 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=3B report with > total time=2C 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/bigtab= le.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 p= rioritize > and/or practically implement them? > > Thanks. > > Andriy =