[PYTHON] Geschichte des Geschwindigkeitsvergleichs der Art des numerischen Werts und der Zeichenkette (unvollendet))

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.

Korrigieren Sie zunächst das Dienstprogramm

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 mache mir Sorgen über den Geschwindigkeitsunterschied zwischen dem Sortieren von Zahlen und dem Sortieren von Zeichenfolgen in Python

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.

Fazit

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

Geschichte des Geschwindigkeitsvergleichs der Art des numerischen Werts und der Zeichenkette (unvollendet))
Geschwindigkeitsvergleich von murmurhash3, md5 und sha1
[Django 2.2] Sortieren und erhalten Sie den Wert des Beziehungsziels
Datum und Uhrzeit ⇔ Zeichenkette
Differenzierung der Sortierung und Verallgemeinerung der Sortierung
Vergleich von Apex und Lamvery
Geschwindigkeitsvergleich der Volltextverarbeitung von Wiktionary mit F # und Python
Geschwindigkeitsvergleich zwischen CPython und PyPy
Geschwindigkeitsvergleich der Python-XML-Perspektive
Ich habe die numerische Berechnung von Python durch Rust ersetzt und die Geschwindigkeit verglichen
[Python] Zusammenfassung der Konvertierung zwischen Zeichenfolgen und numerischen Werten (ASCII-Code)