6b1413a9901aIan,
Thanks for the comprehensive summary and eliminating those last few
issues on the MySQL backend. One more thing which might be useful to
have for comparison purposes is the test results when run on 2.x with
an unmodified Django (from the mirror at https://bitbucket.org/django/django/),
so that people can see what the potential performance penalty is for
calling u() and b() all over the place. I realise that it's not going
to be a scientific comparison, but it will probably show up if there
is appreciable overhead (I haven't found that to be the case, but it
might vary based on platforms and backends).
I posted these from the tests (for the sqlite backend) run on my
Ubuntu VM, in response to a question from Armin Ronacher:
Django on 2.x unported: 4482 tests in 368.972s, skipped = 90
Django on 2.x, with u(), b(), sys.exc_info() etc: 4478 tests in
367.635s, skipped = 90
Django on 3.x, with u(), b(), sys.exc_info() etc: 4423 tests in
372.946s, skipped = 96
It would be interesting to see if a similar pattern emerges on OSX.
Regards,
Vinay Sajip
I know you put the word 'unscientifically' in there, but you can draw
no conclusions from doing one run of each like that. See my reply
earlier in the week on how to simply and easily do valid statistical
testing.
http://osdir.com/ml/django-developers/2011-12/msg00162.html
Cheers
Tom
> I know you put the word 'unscientifically' in there, but you can draw
> no conclusions from doing one run of each like that. See my reply
> earlier in the week on how to simply and easily do valid statistical
> testing.
>
> http://osdir.com/ml/django-developers/2011-12/msg00162.html
>
Hi Tom,
You're right, and you did offer to run some benchmarks if you were
pointed to some code. The Django changeset that Ian pointed to
(https://bitbucket.org/vinay.sajip/django/changeset/6b1413a9901a)
should be runnable without needing to set up a database backend like
MySQL or PostgreSQL, is there any chance you could run those
benchmarks (on the regression test runs under 2.x and 3.x) and post
results?
Regards,
Vinay Sajip
--
You received this message because you are subscribed to the Google Groups "Django developers" group.
To post to this group, send email to django-d...@googlegroups.com.
To unsubscribe from this group, send email to django-develop...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.
The thing is, we aren't trying to "scientifically correct" statistics. What we're aiming to say is, "This is not so wildly different as to be of any concern." We aren't looking for minor difference, but orders of magnitude difference.
Py3k is the future, changing DB adapter from a C library with a python
wrapper to a pure python adaptor should merit some performance testing
of the new adaptor, which is what I really wanted to test.
However, it is bad science (we should all consider ourselves
scientists) to do one run and say that performance hasn't changed.
Regression testing is not just about changes in test results, changes
should also not make the framework unnecessarily slow, and the only
way to determine how much effect a changeset has is to benchmark it,
and the only way to benchmark it is scientifically, using statistics
and to a high degree of confidence.
We should only care about large changes in performance, but how do you
determine if something is a large change, without statistically valid
benchmarks?
>
> Also, I am expecting I could make bigger gains by just using that pure
> Python MySQL driver and running under PyPy. If the major part of the time
> wasn't spent inside the actual database (which should be fairly obviously
> the case as switching from SQLite in memory to MySQL is a >5x increase in
> time).
>
Statistics or shut up :) Only joking :)
How the pure python mysql driver performs compared to one built around
libmysqlclient is particularly interesting. Have you actually tried
this, or are you speculating?
Ian, thanks for running those tests. Running the numbers through
ministat tells us that the patches are slightly slower (3.2% ± 2.5%,
at a 99% confidence).
Cheers
Tom