#22608: Migrations optimizer slow (due to double working?)
--------------------------------------+------------------------------------
     Reporter:  davids                |                    Owner:  nobody
         Type:  Cleanup/optimization  |                   Status:  new
    Component:  Migrations            |                  Version:  master
     Severity:  Normal                |               Resolution:
     Keywords:                        |             Triage Stage:  Accepted
    Has patch:  0                     |      Needs documentation:  0
  Needs tests:  0                     |  Patch needs improvement:  0
Easy pickings:  0                     |                    UI/UX:  0
--------------------------------------+------------------------------------

Comment (by davidszotten):

 my project, which spawned this ticket has certainly improved

 when i raised the ticket:

 `17353606 function calls (17308702 primitive calls) in 39.818 seconds`
 vs
 `3650282 function calls (3640151 primitive calls) in 9.895 seconds`

 same code today (didn't re-run `makemigrations`; they are mostly the same
 38, + 10 new ones added in django

 `4268279 function calls (4178349 primitive calls) in 9.825 seconds`
 vs
 `3907185 function calls (3829169 primitive calls) in 9.213 seconds` (same
 old slow laptop)


 details:

 {{{
 Wed Jan  7 22:37:59 2015    separate.dat

          4268279 function calls (4178349 primitive calls) in 9.825 seconds

    Ordered by: internal time
    List reduced from 553 to 15 due to restriction <15>

    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     28160    1.399    0.000    2.268    0.000
 
/Users/david/dev/django_source/django/db/models/fields/__init__.py:336(deconstruct)
       471    1.292    0.003    1.292    0.003 {method 'execute' of
 'psycopg2._psycopg.cursor' objects}
      5009    0.800    0.000    1.256    0.000
 
/Users/david/dev/django_source/django/db/models/fields/related.py:309(swappable_setting)
     28672    0.738    0.000    1.036    0.000
 
/Users/david/dev/django_source/django/db/models/fields/__init__.py:137(__init__)
 855100/849476    0.569    0.000    0.576    0.000 {getattr}
     19325    0.305    0.000    0.448    0.000
 /Users/david/dev/django_source/django/db/models/options.py:721(_expire_cache)
        94    0.292    0.003    0.292    0.003 {method 'commit' of
 'psycopg2._psycopg.connection' objects}
     31534    0.259    0.000    5.680    0.000
 
/Users/david/dev/django_source/django/db/migrations/state.py:396(construct_fields)
    407619    0.189    0.000    0.232    0.000
 /Users/david/dev/django_source/django/db/models/options.py:348(swapped)
 61368/188    0.177    0.000    0.785    0.004
 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py:145(deepcopy)
    690682    0.144    0.000    0.147    0.000 {method 'get' of 'dict'
 objects}
    150051    0.133    0.000    0.133    0.000 {delattr}
 144008/144006    0.128    0.000    0.299    0.000 {isinstance}
    166461    0.127    0.000    0.127    0.000 {method 'update' of 'dict'
 objects}
     50220    0.107    0.000    0.224    0.000
 /Users/david/dev/django_source/django/apps/config.py:168(get_models)
 }}}


 {{{
 squashed.dat% stats 15
 Wed Jan  7 22:44:14 2015    squashed.dat

          3907185 function calls (3829169 primitive calls) in 9.213 seconds

    Ordered by: internal time
    List reduced from 546 to 15 due to restriction <15>

    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
       392    1.457    0.004    1.458    0.004 {method 'execute' of
 'psycopg2._psycopg.cursor' objects}
     25440    1.202    0.000    1.980    0.000
 
/Users/david/dev/django_source/django/db/models/fields/__init__.py:336(deconstruct)
      4832    0.773    0.000    1.226    0.000
 
/Users/david/dev/django_source/django/db/models/fields/related.py:309(swappable_setting)
     26028    0.758    0.000    1.028    0.000
 
/Users/david/dev/django_source/django/db/models/fields/__init__.py:137(__init__)
 773770/768262    0.514    0.000    0.520    0.000 {getattr}
     21612    0.339    0.000    0.495    0.000
 /Users/david/dev/django_source/django/db/models/options.py:721(_expire_cache)
     28422    0.239    0.000    5.281    0.000
 
/Users/david/dev/django_source/django/db/migrations/state.py:396(construct_fields)
    397942    0.185    0.000    0.227    0.000
 /Users/david/dev/django_source/django/db/models/options.py:348(swapped)
 52884/164    0.157    0.000    0.704    0.004
 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py:145(deepcopy)
    168181    0.146    0.000    0.146    0.000 {delattr}
    619322    0.135    0.000    0.138    0.000 {method 'get' of 'dict'
 objects}
 130099/130097    0.115    0.000    0.265    0.000 {isinstance}
    151382    0.114    0.000    0.114    0.000 {method 'update' of 'dict'
 objects}
     52222    0.110    0.000    0.236    0.000
 /Users/david/dev/django_source/django/apps/config.py:168(get_models)
      4371    0.089    0.000    0.459    0.000
 
/Users/david/dev/django_source/django/db/models/fields/related.py:1803(__init__)
 }}}

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

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.96ead020b8109991e68efe068d343b18%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to