Ich hatte nicht die Anzahl der Kollaborationen, die mit der Qiita-API an den Benutzer gebunden werden können, also habe ich Dienstprogramm selbst erstellt und versucht, die Ranking-Ausgabe zu implementieren. ist.
Da das Erfassungsergebnis als Wörterbuch mit Benutzername und Anzahl der Kollaborationen zurückgegeben wird und die Anzahl der Kollaborationen auch als Zeichen behandelt wird, funktioniert die integrierte sortierte Funktion nicht wie erwartet.
sort.py
import GetQiitaContribution
d = GetQiitaContribution.getContributionByFile("account.txt")
for v in sorted(d.values()):
print (v)
python3 ./sort.py
0
142
23
235
309
4
42
Ich lerne Python hier, also habe ich verschiedene Dinge ausprobiert.
Als Wert des Wörterbuchs habe ich es so geändert, dass die Anzahl der Beiträge als numerischer Wert gespeichert wird, und versucht, die Sortierung wie erwartet durchzuführen.
python
# dict[username] = getContributionByName(username)
dict[username] = int(getContributionByName(username))
time python3 ./sort.py
0
4
23
42
142
235
309
real 0m4.177s
user 0m0.101s
sys 0m0.026s
real 0m3.636s
user 0m0.111s
sys 0m0.028s
real 0m3.377s
user 0m0.108s
sys 0m0.029s
Hier habe ich die ursprüngliche String-Speicherversion mit der Zeit verglichen, die für die Ausführung benötigt wird.
time python3 ./sort.py
0
142
23
235
309
4
42
real 0m4.298s
user 0m0.115s
sys 0m0.045s
real 0m3.535s
user 0m0.100s
sys 0m0.025s
real 0m3.606s
user 0m0.100s
sys 0m0.025s
Ich habe mich gefragt, wie groß der Geschwindigkeitsunterschied zwischen Zeichensortierung und numerischer Sortierung sein würde, aber es war kein Geschwindigkeitsvergleich, der nur die Sortierung ausschloss (ich kann nichts sagen, weil es nicht profiliert ist, aber es erfordert Verarbeitung Die meiste Zeit scheint für das Scraping des Dienstprogramms aufgewendet zu werden, und die Anzahl der zu sortierenden Daten ist kein großes Volumen, daher ist es nicht hilfreich.
Also habe ich mich für einen umfassenden Vergleich entschieden. Ich habe eine Liste mit Zahlen und eine Liste mit Zeichenfolgen von 1 bis 1048576 (maximale Anzahl von Zeilen in Excel für Mac) erstellt und versucht, jede zu sortieren.
Numerischer Wert
real 0m12.400s
user 0m9.455s
sys 0m2.412s
real 0m12.522s
user 0m9.444s
sys 0m2.493s
real 0m12.500s
user 0m9.718s
sys 0m2.288s
String
real 0m14.583s
user 0m9.772s
sys 0m3.828s
real 0m12.000s
user 0m9.259s
sys 0m2.200s
real 0m12.183s
user 0m9.430s
sys 0m2.249s
Wenn die Anzahl der Elemente etwa 1 Million beträgt, gibt es offenbar keinen großen Unterschied in der Geschwindigkeit beim Sortieren von Zahlen und Zeichenfolgen.
Es scheint, dass die Geschwindigkeit nicht in der Größenordnung von 7 Stellen angegeben wird, unabhängig davon, ob es sich um eine Zeichenfolge oder einen numerischen Wert handelt. LL ist weit verbreitet und fällt sehr auf, aber ich bin ein wenig überrascht, dass ich ein Rotorprogrammierer werde, egal ob es sich um die Entwicklung der Hardware oder die Entwicklung von LL handelt, aber ich möchte diesen losen Artikel hier beenden.
Vielen Dank an diejenigen, die bisher gelesen haben.
Recommended Posts