Dies ist schneller zu verwenden, wenn Anweisung oder Wörterbuchtyp beim Konvertieren einer Zeichenfolge (a-> b) in Python

Was ich mit dem Hintergrund gemacht habe

Ich wollte die Cloud-Funktionen von GCP verwenden, um jede Eingabe in ein Wortpaar umzuwandeln, z. B. "Obst" für "Apfel" und "Gemüse" für "Erdbeere". Ich habe mich gefragt, was schneller ist, ** mit if-Anweisung konvertieren ** oder ** eine Korrespondenztabelle vom Typ Wörterbuch vorbereiten und konvertieren **, also habe ich es versucht. Hinweis) In meinem Fall handelt es sich häufig um einen Kaltstart. Daher berechne ich die erforderliche Zeit einschließlich der Generierung des Wörterbuchtyps.

Fazit

** Wenn jedes Mal ein Wörterbuch gelesen wird (z. B. wenn Lambda unter AWS oder Cloud-Funktionen unter GCP kalt gestartet werden) ** Die if-Anweisung ist schneller.

Wenn der Schlüssel 5 Zeichen ist fig2.png

Wenn der Schlüssel 10 Zeichen ist fig1.png (Da ich Colab verwendet habe, ist die Verarbeitungsgeschwindigkeit jedes Mal möglicherweise nicht stabil.)

** Es war ein überwältigender Sieg für die if-Aussage. ** **.

Wenn es kein Kaltstart ist, habe ich das Gefühl, dass der Wörterbuchtyp schneller ist, also werde ich es versuchen, wenn ich Lust dazu habe (Wenn das Dokument nervt ...)

Umgebung

Python 3 Google Colaboratory

Überprüfungsbedingungen

Beispiel für einen Bestätigungscode

Vorbereitung

import time
import random, string
from statistics import mean

#Zufällige Zeichenfolgenerstellung (entlehnt aus der Referenz "Zufällige Zeichenfolge mit Python generieren")
def randomname(n):
   return ''.join(random.choices(string.ascii_letters + string.digits, k=n))

range_ = 5

smp_dict = {}
key_list = []
for i in range(range_):
    key = randomname(10)
    smp_dict[key] = randomname(20)
    key_list.append(key)

#if Anweisungserstellung
for i in range(range_):
    if i == 0:
        print("      if key == '{}':".format(key_list[i]))
    else :
        print("      elif key == '{}':".format(key_list[i]))
    print("          content = '{}'".format(smp_dict[key_list[i]]))

Erstellen Sie einen Bestätigungscode, indem Sie die obige Ausgabe der if-Anweisung kopieren

rnd_key_list = smp_dict.keys()

time_list = []
for i in range(100):
    start = time.time()
    for key in rnd_key_list:
        if key == 's9MT4kkqyg':
            content = 'JpNeK8tDV1FyQfXdzTS0'
        elif key == 'PKFEikSHFM':
            content = 'RxhZqdfsCqLTuxBzIrdV'
        elif key == '04Ex4druSy':
            content = 'GmT0Jx78xPuMrOyVPuik'
        elif key == 'JUJ85l8ayb':
            content = 'xVtzS0HnHHEOHML87z85'
        elif key == 'HnqyHAIcLm':
            content = 'NRNoem9JpGUcFxvccaxD'
    time_list.append(elapsed_time)
if_mean = mean(time_list)
print ("if Mean time:{}".format(if_mean) + "[sec]")


time_list = []
for i in range(100):
    start = time.time()
    Smp_dict = {'s9MT4kkqyg': 'JpNeK8tDV1FyQfXdzTS0', 'PKFEikSHFM': 'RxhZqdfsCqLTuxBzIrdV', '04Ex4druSy': 'GmT0Jx78xPuMrOyVPuik', 'JUJ85l8ayb': 'xVtzS0HnHHEOHML87z85', 'HnqyHAIcLm': 'NRNoem9JpGUcFxvccaxD'}
    for key in rnd_key_list:
        content = Smp_dict[key]
    elapsed_time = time.time() - start
    time_list.append(elapsed_time)
dict_mean = mean(time_list)
print ("dict Mean time:{}".format(dict_mean) + "[sec]")

Erläuterung des Bestätigungscodes

smp_dict = {}
key_list = []
for i in range(100):
    key = randomname(10)
    smp_dict[key] = randomname(20)
    key_list.append(key)

-> Erstellen Sie eine Wörterbuchtyp- und Schlüsselliste mit 10 zufälligen Zeichen als Schlüssel und 20 zufälligen Zeichen als Werten

rnd_key_list = smp_dict.keys()

-> ~~ Die Reihenfolge bleibt beim Erstellen eines Wörterbuchtyps ~~ nicht erhalten. Erstellen Sie daher eine neue Schlüsselliste, um die Bedingungen zu ändern Ich habe einen Kommentar von @shiracamus erhalten, dass ich ihn vor kurzem behalten werde!

start = time.time()
Smp_dict = {'BGM85yImoJ': 'i5GozNMNXGdfrlVgmVA0', ...}

-> Lesen Sie den Wörterbuchtyp nach dem Start der Messung

Referenz

[Python] Messen und Anzeigen der für die Verarbeitung erforderlichen Zeit Zufällige Zeichenfolgen mit Python generieren

Recommended Posts

Dies ist schneller zu verwenden, wenn Anweisung oder Wörterbuchtyp beim Konvertieren einer Zeichenfolge (a-> b) in Python
Zeitzonenspezifikation beim Konvertieren einer Zeichenfolge in einen Datums- / Uhrzeittyp mit Python
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
Hash in Perl ist ein Wörterbuch in Python
Was ist schneller, Python Shuffle oder Sample?
Python> Überprüfen Sie NoneType oder nicht> wenn a == None:> wenn a None ist:
So überprüfen Sie, ob es sich um einen Wörterbuch-Typ (Wörterbuch, Hash) handelt, indem Sie einen oder alle verwenden
Erstellen Sie ein Wörterbuch in Python
Warum ist Pythons main () -if-Anweisung angehängt?
Wenn sich eine Zeichenfolge einer bestimmten Reihe im Schlüssel des Wörterbuchs befindet, wird die Zeichenfolge in den Wert des Wörterbuchs konvertiert.
Wenn im Python-Wörterbuch auf einen nicht vorhandenen Schlüssel zugegriffen wird, initialisieren Sie ihn mit einem beliebigen Wert
So machen Sie einen String in Python zu einem Array oder ein Array zu einem String
Wenn ein Anfänger im Dezember 2019 R oder Python lernt, welches?
[Einführung in Python] So geben Sie eine Zeichenfolge in einer Print-Anweisung aus
Löschen Sie ein bestimmtes Zeichen in Python, wenn es das letzte ist
Stellen Sie fest, ob beim Ausführen eines Python-Skripts eine Standardausgabe weitergeleitet wird
[Golang] Überprüfen Sie, ob eine bestimmte Zeichenfolge in der Zeichenfolge enthalten ist
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
[Python] Was ist eine with-Anweisung?
Was ist besser, PyPy oder Python?
[Python] gibt A [oder / und] B zurück
Erstellen Sie eine zufällige Zeichenfolge in Python
Beim Schreiben eines Programms in Python
So geben Sie eine Zeichenfolge in Python ein und geben sie unverändert oder in die entgegengesetzte Richtung aus.
Was tun, wenn in python json .dumps eine Dezimalstelle enthalten ist?
So schreiben Sie eine Zeichenfolge, wenn Python mehrere Zeilen enthält
Bei der Ausgabe einer INSERT-Anweisung in Python wird keine solche Spalte angezeigt
Was passiert, wenn Sie in Python "A, B als C importieren"?
Löse ABC175 A, B, C mit Python
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
Python / Wörterbuch> setdefault ()> Hinzufügen, wenn nicht im Wörterbuch
[Python] [Meta] Ist der Python-Typ ein Typ?
Löse ABC165 A, B, D mit Python
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
Das Ausgabe-Timing ist falsch, wenn die Standardausgabe (Fehlerausgabe) in eine Datei in Python konvertiert wird
[Für Anfänger] Unerwartetes Verhalten, wenn beim Festlegen des Pfads in Python "\" enthalten ist
Was ist besser, PyPy oder Python?
Analyse durch Bayes'sches Denken (2) ... Testen Sie den Algorithmus zur Erkennung von Konserven
[Linux] Ende des Prozesses oder Jobs, was ist besser?
Was ist besser, wenn Pythons Standardeingabe input () oder sys.stdin empfängt?
Dies ist schneller zu verwenden, wenn Anweisung oder Wörterbuchtyp beim Konvertieren einer Zeichenfolge (a-> b) in Python
[Anfänger sind besorgt] Was ist besser, Ruby, PHP oder Python?
[Python] gibt A [oder / und] B zurück
Wird der Leerzeichen bei der Verarbeitung der prozentualen Codierung durch ein Pluszeichen oder% 20 ersetzt?
Die Netzwerkanalyse ist eine Weblinkstruktur ①
Die Netzwerkanalyse ist eine Weblinkstruktur ②
Was ist schneller, Python Shuffle oder Sample?
Einbetten von Variablen in Python-Strings
Konvertierungsargument $ 1 Typ: Nicht unterstützter Typ [] String, ein Stück String
Holen Sie sich mehrere maximale Schlüssel im Python-Wörterbuchtyp
Python Hinweis: Wenn Sie einer Zeichenfolge einen Wert zuweisen
Python-Memo- "wenn nicht A und B" war "wenn (nicht A) und B"
Erstellen Sie ein Datum / Uhrzeit-Objekt aus einer Zeichenfolge in Python (Python 3.3).
Geben Sie eine kurze URL-ähnliche Zeichenfolge in Python aus
Fügen Sie ein Objekt in eine Zeichenfolge in Python ein
Ich habe die Referenzgeschwindigkeit überprüft, wenn ich Python-Liste, Wörterbuch und Set-Typ verwendet habe.
Ein Hinweis beim Überprüfen, ob der angegebene Schlüssel im definierten Wörterbuch mit Python vorhanden ist
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
[Python] Vorsichtsmaßnahmen, wenn es nicht funktioniert, auch wenn TimedRotatingFileHandler in basicConfig in Python2 festgelegt ist