Of course Java IS faster by a few factors then Python. I switched recently
to Play development from django and I also noticed different. Moreover Play
uses many mature tools, like JPA/Hibernate, ehcache etc which are called
industrial standards.
One more thing - Play! uses its own build-in http server, and keep one
connection to a database alive at all the time, Django run as FCGI or
mod_wsgi manages this a bit different.

On Tue, Jul 5, 2011 at 9:54 PM, drakkan <drakkan1...@gmail.com> wrote:

> Hi,
>
> I did a small test app that basically render a web page and do 3
> queries to the database (these queries are needed to fetch some data
> displayed on the web page). I deployed this app with nginx+uswgi
>
> here is the relevant nginx conf:
>
> location / {
>                uwsgi_pass 127.0.0.1:49152;
>                include uwsgi_params;
>        }
>
> I configured nginx to serve the static files too:
>
> location /media {
>                root <root path for media>;
>                autoindex on;
>        }
>
> I launch uswgi as follow:
>
> uwsgi --chdir=<path> --
> module='django.core.handlers.wsgi:WSGIHandler()' --env
> DJANGO_SETTINGS_MODULE=myapp.settings --master --pidfile=/tmp/project-
> master.pid --socket=127.0.0.1:49152 --max-requests=5000 --process=5
>
> then I benchmarked the app with ab:
>
> ab -n 1000 -c 4 http://127.0.0.1:80/
> This is ApacheBench, Version 2.3 <$Revision: 655654 $>
> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
> Licensed to The Apache Software Foundation, http://www.apache.org/
>
> Benchmarking 127.0.0.1 (be patient)
> Completed 100 requests
> Completed 200 requests
> Completed 300 requests
> Completed 400 requests
> Completed 500 requests
> Completed 600 requests
> Completed 700 requests
> Completed 800 requests
> Completed 900 requests
> Completed 1000 requests
> Finished 1000 requests
>
>
> Server Software:        nginx
> Server Hostname:        127.0.0.1
> Server Port:            80
>
> Document Path:          /
> Document Length:        24293 bytes
>
> Concurrency Level:      4
> Time taken for tests:   28.914 seconds
> Complete requests:      1000
> Failed requests:        0
> Write errors:           0
> Total transferred:      24423000 bytes
> HTML transferred:       24293000 bytes
> Requests per second:    34.59 [#/sec] (mean)
> Time per request:       115.654 [ms] (mean)
> Time per request:       28.914 [ms] (mean, across all concurrent
> requests)
> Transfer rate:          824.89 [Kbytes/sec] received
>
> Connection Times (ms)
>              min  mean[+/-sd] median   max
> Connect:        0    0   0.1      0       4
> Processing:    46  115  42.6    110     636
> Waiting:       46  115  42.5    109     636
> Total:         46  116  42.6    110     636
>
> Percentage of the requests served within a certain time (ms)
>  50%    110
>  66%    121
>  75%    131
>  80%    139
>  90%    161
>  95%    177
>  98%    203
>  99%    220
>  100%    636 (longest request)
>
> now I implemented the same app using playframework, a java based
> framework and benchmarked with ab again:
>
>
> ab -n 1000 -c 4 http://127.0.0.1:9000/
> This is ApacheBench, Version 2.3 <$Revision: 655654 $>
> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
> Licensed to The Apache Software Foundation, http://www.apache.org/
>
> Benchmarking 127.0.0.1 (be patient)
> Completed 100 requests
> Completed 200 requests
> Completed 300 requests
> Completed 400 requests
> Completed 500 requests
> Completed 600 requests
> Completed 700 requests
> Completed 800 requests
> Completed 900 requests
> Completed 1000 requests
> Finished 1000 requests
>
>
> Server Software:        Play!
> Server Hostname:        127.0.0.1
> Server Port:            9000
>
> Document Path:          /
> Document Length:        19614 bytes
>
> Concurrency Level:      4
> Time taken for tests:   4.436 seconds
> Complete requests:      1000
> Failed requests:        0
> Write errors:           0
> Total transferred:      19961000 bytes
> HTML transferred:       19614000 bytes
> Requests per second:    225.44 [#/sec] (mean)
> Time per request:       17.743 [ms] (mean)
> Time per request:       4.436 [ms] (mean, across all concurrent
> requests)
> Transfer rate:          4394.59 [Kbytes/sec] received
>
> Connection Times (ms)
>              min  mean[+/-sd] median   max
> Connect:        0    0   0.0      0       1
> Processing:     7   18   6.6     16      47
> Waiting:        6   17   6.6     16      47
> Total:          7   18   6.6     16      47
>
> Percentage of the requests served within a certain time (ms)
>  50%     16
>  66%     19
>  75%     22
>  80%     23
>  90%     27
>  95%     30
>  98%     34
>  99%     38
>  100%     47 (longest request)
>
>
> so play is outperforming django! obviously django is not in debug mode
> ecc..., is there something wrong in my test setup (I already tried to
> adjust the uwsgi launch line I tryed more process or 1 process with
> threads ecc with no relevant improvement) or django/python is simply
> much slower than java? I tried to run play behind nginx proxy too: the
> results are pratically identical. Note the response time too: the
> slowest play response is 47 ms, the fastest django one is 110 ms,
>
> any suggestion to improve performance is appreciated,
>
> thanks in advance,
> drakkan
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to