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.
** 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
Wenn der Schlüssel 10 Zeichen ist (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 ...)
Python 3 Google Colaboratory
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]")
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
[Python] Messen und Anzeigen der für die Verarbeitung erforderlichen Zeit Zufällige Zeichenfolgen mit Python generieren