id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 20950,Use OrderedDicts in ORM only when needed,Anssi Kääriäinen,nobody,"Initializing OrderedDicts seem to be really slow, at least on Python 2.7. By instantiating OrderedDicts in Query only when needed one can save considerable time. For example model_save_existing benchmark is 1.3x faster, qs_filter_chaining 1.35x faster. Nearly all of the query_ benchmarks have at least 10% speedup. Patch at https://github.com/akaariai/django/tree/ordered_dict_on_need. Together with splitted_clone branch this gives over 1.5x speedup to model_save_existing. There might be some cleaner way to implement the ""initiate only on need"" for Query._aggregates and Query._extra. Ideas welcome. Ill accept this directly as this seems like a good idea to do. This trades code-cleanness for performance, but in this particular case I think it is worth it.",Cleanup/optimization,closed,"Database layer (models, ORM)",dev,Normal,fixed,,,Accepted,1,0,0,0,0,0