[Django] #23837: Replace list.pop(0) by deque.popleft() in dfs function in migrations

3 views
Skip to first unread message

Django

unread,
Nov 15, 2014, 10:21:27 AM11/15/14
to django-...@googlegroups.com
#23837: Replace list.pop(0) by deque.popleft() in dfs function in migrations
--------------------------------------+--------------------
Reporter: Zweedeend | Owner:
Type: Cleanup/optimization | Status: new
Component: Migrations | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+--------------------
The function dfs in dj.migrations.graph uses list.pop(0) and insert(0,
...).

These methods are not efficient for lists. Using a deque with the methods
popleft and extendleft is more efficient.

--
Ticket URL: <https://code.djangoproject.com/ticket/23837>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Nov 15, 2014, 10:21:44 AM11/15/14
to django-...@googlegroups.com
#23837: Replace list.pop(0) by deque.popleft() in dfs function in migrations
-------------------------------------+-------------------------------------
Reporter: Zweedeend | Owner: Zweedeend
Type: | Status: assigned
Cleanup/optimization | Version: master
Component: Migrations | Resolution:
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Zweedeend):

* owner: => Zweedeend
* needs_better_patch: => 0
* status: new => assigned
* needs_tests: => 0
* needs_docs: => 0


--
Ticket URL: <https://code.djangoproject.com/ticket/23837#comment:1>

Django

unread,
Nov 15, 2014, 10:22:47 AM11/15/14
to django-...@googlegroups.com
#23837: Replace list.pop(0) by deque.popleft() in dfs function in migrations
-------------------------------------+-------------------------------------
Reporter: Zweedeend | Owner: Zweedeend
Type: | Status: assigned
Cleanup/optimization | Version: master
Component: Migrations | Resolution:
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Zweedeend):

* cc: Zweedeend (added)


--
Ticket URL: <https://code.djangoproject.com/ticket/23837#comment:2>

Django

unread,
Nov 15, 2014, 10:37:35 AM11/15/14
to django-...@googlegroups.com
#23837: Replace list.pop(0) by deque.popleft() in dfs function in migrations
-------------------------------------+-------------------------------------
Reporter: Zweedeend | Owner: Zweedeend
Type: | Status: assigned
Cleanup/optimization | Version: master
Component: Migrations | Resolution:
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Zweedeend):

* has_patch: 0 => 1


--
Ticket URL: <https://code.djangoproject.com/ticket/23837#comment:3>

Django

unread,
Nov 15, 2014, 10:40:38 AM11/15/14
to django-...@googlegroups.com
#23837: Replace list.pop(0) by deque.popleft() in dfs function in migrations
-------------------------------------+-------------------------------------
Reporter: Zweedeend | Owner: Zweedeend
Type: | Status: assigned
Cleanup/optimization | Version: master
Component: Migrations | Resolution:
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Zweedeend):

Patch at https://github.com/Zweedeend/django/tree/ticket_23837

--
Ticket URL: <https://code.djangoproject.com/ticket/23837#comment:4>

Django

unread,
Nov 15, 2014, 10:44:12 AM11/15/14
to django-...@googlegroups.com
#23837: Replace list.pop(0) by deque.popleft() in dfs function in migrations
-------------------------------------+-------------------------------------
Reporter: Zweedeend | Owner: Zweedeend
Type: | Status: assigned
Cleanup/optimization | Version: master
Component: Migrations | Resolution:
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by aaugustin):

Zweedeend, can you turn this into a proper pull request so the CI runs it?

--
Ticket URL: <https://code.djangoproject.com/ticket/23837#comment:5>

Django

unread,
Nov 15, 2014, 12:56:58 PM11/15/14
to django-...@googlegroups.com
#23837: Replace list.pop(0) by deque.popleft() in dfs function in migrations
-------------------------------------+-------------------------------------
Reporter: Zweedeend | Owner: Zweedeend
Type: | Status: closed
Cleanup/optimization | Version: master
Component: Migrations | Resolution: fixed

Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Niels Kouwenhoven <nielskouwenhoven@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"fefb77934e6b8f91ce44be7e1438146cb99baa19"]:
{{{
#!CommitTicketReference repository=""
revision="fefb77934e6b8f91ce44be7e1438146cb99baa19"
Fixes #23837: Replace list.pop(0) by deque.popleft() in dfs function in
migrations
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/23837#comment:6>

Django

unread,
Nov 15, 2014, 12:56:58 PM11/15/14
to django-...@googlegroups.com
#23837: Replace list.pop(0) by deque.popleft() in dfs function in migrations
-------------------------------------+-------------------------------------
Reporter: Zweedeend | Owner: Zweedeend
Type: | Status: closed
Cleanup/optimization | Version: master
Component: Migrations | Resolution: fixed
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Carl Meyer <carl@…>):

In [changeset:"1ed9b9e2e2b62f6ef89558f98d786e9fcd649152"]:
{{{
#!CommitTicketReference repository=""
revision="1ed9b9e2e2b62f6ef89558f98d786e9fcd649152"
Merge pull request #3536 from Zweedeend/ticket_23837

Fixes #23837: Replace list with deque in migration-planner for improved
performance.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/23837#comment:7>

Reply all
Reply to author
Forward
0 new messages