Re: Suggestion: a new "nature" field in Trac

2011-02-23 Thread mmcnickle


On Feb 22, 11:22 am, Russell Keith-Magee 
wrote:

>  2) Directing people who are inclined to be altruistic to the right place.

For Firefox bugs, each patch can be flagged as follows:

Request a review from anyone: review=?
Request a review from someone specific: russellm: review?
Russel hates the patch: russellm: review-
Russel likes the patch: russellm: review+
Russel thinks Jannis is better place to review this: jezdez: review?

This obviously doesn't cure the "we need more people reviewing
patches" problem, but it does allow triagers to nudge the appropriate
people to review certain patches. A long list of "review these
patches" might be the motivation some people need.

It may be argued that this just adds to the administrivia of tickets,
but it is certainly effective for firefox. But that may be to the
large number of contributors willing to do patch reviews.

-- Martin


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



Benchmarking change to query.get() #15361

2011-02-24 Thread mmcnickle
Hi All,

Background to this post is available at 
http://code.djangoproject.com/ticket/15361

I've created a better benchmark in order to test where the change in
the above ticket causes a performance regression. These are the
results of those tests.

First of all, the results are based on query.get() on 2 Book
objects, generated by the following code [1]

I ran the following 2 benchmarks query_get [2] and query_get_multiple
[3] on MySQL and sqlite. query_get is a simple get() using a unique
indexed column and will return one object only. query_get_multiple is
a get() on an non-indexed column, it will return 1284 objects.

The benchmark results, as reported by djangobench [4] are as follows:

sqlite:

---
Running all benchmarks
Control: Django 1.3 beta 1 (in django-control)
Experiment: Django 1.3 beta 1 (in django-experiment)

Running 'query_get' benchmark ...
Min: 0.00 -> 0.00: incomparable (one result was zero)
Avg: 0.000745 -> 0.000979: 1.3141x slower
Significant (t=-5.900348)
Stddev: 0.00263 -> 0.00297: 1.1318x larger (N = 1)

Running 'query_get_multiple' benchmark ...
Min: 0.02 -> 0.00: incomparable (one result was zero)
Avg: 0.029883 -> 0.001072: 27.8759x faster
Significant (t=482.259535)
Stddev: 0.00511 -> 0.00309: 1.6519x smaller (N = 1)
---

mysql
---
Running all benchmarks
Control: Django 1.3 beta 1 (in django-control)
Experiment: Django 1.3 beta 1 (in django-experiment)

Running 'query_get' benchmark ...
Min: 0.00 -> 0.00: incomparable (one result was zero)
Avg: 0.000810 -> 0.001039: 1.2827x slower
Significant (t=-5.591014)
Stddev: 0.00273 -> 0.00305: 1.1169x larger (N = 1)

Running 'query_get_multiple' benchmark ...
Min: 0.02 -> 0.00: incomparable (one result was zero)
Avg: 0.028856 -> 0.001152: 25.0486x faster
Significant (t=429.695948)
Stddev: 0.00560 -> 0.00319: 1.7544x smaller (N = 1)
---

As you can see, with 1 trials, the speed differences are
significant (and repeatable) as are roughly as follows:

query.get() on a unique indexed column runs 1.3x slower
query.get() on an non-unique, non-index column runs 25-27x FASTER

I've done some very quick tests to see how these gains/losses scale
for various values of n objects:

The speedup for the non-indexed columns is exponential to n.
The slowdown for the indexed columns is roughly constant for all n.

So there you have it, we have a small regression in performance for
the most common case use, and a huge potential gain for the less used
(and some would argue, badly designed) query.

What do you think, is the gain worth the hit? Is it possible to have 2
different code paths depended on what column(s) the query is filtering
on?

-- Martin

P.S Between each trial, djangobench will try and reload the
initial_data.json fixture, which for 2 objects is very time
consuming. If you want to reproduce the results yourself, I'd suggest
creating a database with the objects already in it, instead of relying
on fixtures.


[1] object generation script -- http://pastebin.com/6JAJDA6f
[2] query_get benchmark -- http://pastebin.com/qZBdvSie
[3] query_get_multiple benchmark -- http://pastebin.com/iEYsfmd5
[4] djangobench project (Luke's fork) -- 
https://github.com/spookylukey/djangobench

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



Re: Benchmarking change to query.get() #15361

2011-02-25 Thread mmcnickle
On Feb 24, 11:40 pm, Russell Keith-Magee 
wrote:
> Optimizing Django's retrieval code for the bad design
> case strikes me as equally bad design. I say document this and leave
> the code as is.

Ok, I'll write a documentation patch for this for the optimisation
section.

Good job for catching this slowdown, Luke. I would never have thought
of it.

-- Martin

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



Re: "needsinfo": resolution vs. triage stage

2011-02-25 Thread mmcnickle

On Feb 25, 3:17 am, Gabriel Hurley  wrote:

>    - May intimidate new contributors to see that their ticket was "closed".
>    - Doesn't discount the fact that there may be a valid issue here which we
>    don't want to forget about.

I wouldn't underestimate either of these 2 points. The PHP core team
"close" issues that need replies/more info, or simply haven't gained
any attention after a month. Coming from a reporter of a few of those
issues, I can say it is extremely offputting as it's (in PHP's case)
almost impossible to get those tickets out of that state, even if more
info has been supplied. Many valid bugs were shelved/forgotten for
lack of interest.

Trac also doesn't seem to search "closed" tickets, so you may have an
increase in duplicate bugs being reported.

Realise as a new dev, my vote doesn't carry much weight, but I would
+1 triage stage for the reasons above.

-- Martin

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



#15575: MultipleObjectMixin.paginate_queryset always returns is_paginated=True, despite docs saying otherwise

2011-03-11 Thread mmcnickle
http://code.djangoproject.com/ticket/15575

Should the patch fix the documentation to match tested behaviour (one
passing test in generic_views specifically tests this case), or should
the code be patched to meet the expectation of the documentation?

-- Martin

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