tag:blogger.com,1999:blog-8404509726009905633.post5236894606410871781..comments2026-02-27T08:19:36.362+02:00Comments on Mind Reference: Python Web Routing BenchmarkAndriy Kornatskyyhttp://www.blogger.com/profile/04890869628175359888noreply@blogger.comBlogger19125tag:blogger.com,1999:blog-8404509726009905633.post-73583937328178484302013-11-17T14:14:04.388+02:002013-11-17T14:14:04.388+02:00Just added.Just added.Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-54844708910220299662013-11-16T21:11:11.205+02:002013-11-16T21:11:11.205+02:00Where is Pylons ? :)Where is Pylons ? :)atomekkhttps://www.blogger.com/profile/08865452992510799305noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-68600333550838400172012-11-22T14:56:17.937+02:002012-11-22T14:56:17.937+02:00Test coverage tells me something, but not the spli...Test coverage tells me something, but not the split between code/tests/demos/etc.<br /><br />You are mistaken, I do not present a bigger code base as something negative. The problem is with number of PEP8 or CC errors that needs attention. The numbers, being normalized, gives you an idea regardless the code base size.Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-53846032715592327382012-11-21T11:49:42.215+02:002012-11-21T11:49:42.215+02:00Thank you.Thank you.Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-15657378836885703002012-11-21T09:30:09.744+02:002012-11-21T09:30:09.744+02:00Chris, thank you for the comment. That might be an...Chris, thank you for the comment. That might be an idea for another post, but my idea was to get thing simple without spending much time in-depth analysis what is test, what is contributed, what is a sample, etc. The trend most likely remains.Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-65746691541271841822012-11-20T14:57:04.489+02:002012-11-20T14:57:04.489+02:00I think it would be really interesting if you coul...I think it would be really interesting if you could describe why wheezy is faster. For example, I remember a talk (maybe it was linked from your template post?) showing benchmarks about the speed of different speed operations in python.<br /><br />In a similar way, it would be nice if you can take two or three frameworks and state why wheezy is faster. Is due to the implementation? Is because theAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-58231401307991547232012-11-20T14:07:42.561+02:002012-11-20T14:07:42.561+02:00wheezy.web seo routing benchmark has been improved...wheezy.web seo routing benchmark has been improved by approximately 40%.Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-76996422355103201442012-10-17T18:52:50.200+03:002012-10-17T18:52:50.200+03:00The test works with module `app` located in a dire...The test works with module `app` located in a directory per framework. The load code is outside of timeit call.Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-23207277640580591412012-10-17T18:41:00.034+03:002012-10-17T18:41:00.034+03:00The google group post basically says it all: Now ...The google group post basically says it all:<br /><br />Now that I&#39;ve looked in detail at the test, it is because the test is<br />nonsensical. Each time it tests the URLs, it constructs a fresh WSGI<br />application. Each fresh application has to compile each URL in the<br />urlconf before using it. It then destroys the application, and starts<br />another one up. Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-61655281877385830322012-10-11T20:31:47.782+03:002012-10-11T20:31:47.782+03:00Could you be a bit more concrete with respect to c...Could you be a bit more concrete with respect to comments you would like to hear, please? Just ask your question or voice concern if any.<br />Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-73613528018102081312012-10-11T18:50:44.450+03:002012-10-11T18:50:44.450+03:00https://groups.google.com/d/msg/django-developers/...https://groups.google.com/d/msg/django-developers/4h0eP_mBE8A/40ZnOiJwjQQJ<br /><br />Comments?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-73229181692579554282012-10-11T14:37:56.779+03:002012-10-11T14:37:56.779+03:00You are wrong in missing a fact that OS spent cycl...You are wrong in missing a fact that OS spent cycles on IO wait.<br /><br />Isolated benchmark is executed on a single CPU core; even so you might get different results since kernel loop cores as process runs, however you can overcome this with `taskset` command to pin your process to concrete core... again Xeon processor shows better results here... longer test runs.<br /><br />uwsgi can be Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-71229810751519173132012-10-10T23:45:32.329+03:002012-10-10T23:45:32.329+03:00Okay, I understand your point. But I just have one...Okay, I understand your point. But I just have one question. Running a benchmark, as it is. without http, just testing the urldispatcher gives me worse results than using uwsgi with all the overhead of the HTTP layer and network layer, etc. ..?<br /><br />Is this confuses me a lot.<br /><br />The same test is performed using a benchmark and using uwsgi + ab.<br />In my opinion, a benchmark shouldAnonymoushttps://www.blogger.com/profile/05900252514676892336noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-85948125851709026202012-10-10T23:17:39.904+03:002012-10-10T23:17:39.904+03:00In your test the apache benchmark concurrency is 2...In your test the apache benchmark concurrency is 2. See http://mindref.blogspot.com/2012/09/python-fastest-web-framework.html.<br /><br />The reason you do not see the difference is related to environment you are using. If the limit is in your network - you will see lower CPU load, etc. This test get rid of all these factors and just measure internal framework effectivity, no network, no web Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-60379437900345863932012-10-10T22:48:18.079+03:002012-10-10T22:48:18.079+03:00No matter whether it is realistic or not realistic...No matter whether it is realistic or not realistic! In fact, if a server is with little power, could easily be a realistic configuration. What is needed is a deterministic scenario for all tests. If you have 2 or 20 processes processes, will demonstrate that uwsgi works well, but should not affect the results. Would scale linearly to the number of processes that can manage your server.<br /><br /Anonymoushttps://www.blogger.com/profile/05900252514676892336noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-29947656133998645862012-10-10T19:28:25.265+03:002012-10-10T19:28:25.265+03:00How about concurrency... you think 2 concurrent re...How about concurrency... you think 2 concurrent requests are realistic?<br /><br />The benchmark represents nominal numbers... you most likely run into network, CPU limitations (client or server). See previous post about web frameworks performance: there are several frameworks that runs almost at speed of plain simple WSGI application and difference is not visible, for that reason there is Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-90771693407967938912012-10-10T19:08:03.392+03:002012-10-10T19:08:03.392+03:00I&#39;ve been testing your benchmarks, with overhe...I&#39;ve been testing your benchmarks, with overhead of http, and I can not get results similar to yours. &quot;wheezy&quot; is fast, but in several cases bottle has better performance.<br /><br />Of course there is not much difference between the results. In your first case, wheezy is 9 times faster than django. But testing on uwsgi directly, only 2 times faster.<br /><br />I think your charts Anonymoushttps://www.blogger.com/profile/05900252514676892336noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-55999180896623681272012-10-10T16:53:22.494+03:002012-10-10T16:53:22.494+03:00The numbers are captured by python standard module...The numbers are captured by python standard module `timeit` (see benchmark.py:38), it doesn&#39;t provide metrics you requested.Andriy Kornatskyyhttps://www.blogger.com/profile/04890869628175359888noreply@blogger.comtag:blogger.com,1999:blog-8404509726009905633.post-68072620405964822172012-10-10T16:06:39.974+03:002012-10-10T16:06:39.974+03:00Could you graph the evolution of req/seq over time...Could you graph the evolution of req/seq over time ? Thanks.xndxnhttps://www.blogger.com/profile/01253560028163024812noreply@blogger.com