Ich weiß, dass __builtin__
sortierte() Funktion auf jedem iterable funktioniert. Aber kann jemand diesen riesigen (10x) Leistungsunterschied zwischen anylist.sort() und sortierten (anylist) erklären? Bitte, weisen Sie auch darauf hin, wenn ich etwas falsch mache, wie dies gemessen wird.Python sort() -Methode auf Liste vs eingebaute sorted() -Funktion
""" Example Output: $ python list_sort_timeit.py Using sort method: 20.0662879944 Using sorted builin method: 259.009809017 """ import random import timeit print 'Using sort method:', x = min(timeit.Timer("test_list1.sort()","import random;test_list1=random.sample(xrange(1000),1000)").repeat()) print x print 'Using sorted builin method:', x = min(timeit.Timer("sorted(test_list2)","import random;test_list2=random.sample(xrange(1000),1000)").repeat()) print x
Wie der Titel schon sagt, war ich interessiert List.Sort() vs sortiert (Liste) in den Vergleich. Das obige Snippet zeigte etwas Interessantes, dass sich die Sortierfunktion von Python sehr gut für bereits sortierte Daten verhält. Wie von Anurag aufgezeigt, arbeitet die Sortiermethode im ersten Fall an bereits sortierten Daten und während in der zweiten Sortierung arbeitet sie an neuen Stücken, um immer wieder zu arbeiten.
Also schrieb ich diese zu testen und ja, sie sind sehr nah.
""" Example Output: $ python list_sort_timeit.py Using sort method: 19.0166599751 Using sorted builin method: 23.203567028 """ import random import timeit print 'Using sort method:', x = min(timeit.Timer("test_list1.sort()","import random;test_list1=random.sample(xrange(1000),1000);test_list1.sort()").repeat()) print x print 'Using sorted builin method:', x = min(timeit.Timer("sorted(test_list2)","import random;test_list2=random.sample(xrange(1000),1000);test_list2.sort()").repeat()) print x
Oh, sehe ich Alex Martelli mit einer Antwort, wie ich dies tippt .. (Ich werde die bearbeiten lassen, wie es sinnvoll sein könnte).
Übrigens, da dies eine Frage mit einer legitimen Antwort ist, sollte es wahrscheinlich kein Community Wiki sein. –
Okay, das werde ich mir merken, Daniel. Es ist ein guter Zeiger. –