[PYTHON] "Durchschnitt der Summen von 1 bis 10" und seine Ausführungsgeschwindigkeit

Einführung

Neulich habe ich mich für "Python" entschieden, also bin ich zum Anfang zurückgekehrt und habe so etwas wie eine Grundübung gemacht Ich habe versucht, so etwas wie "den Durchschnitt der Summe von 1 bis 10" zu machen. Einführung der Lösung zu diesem Zeitpunkt

Normaler Mustercode

# -*- coding: utf-8 -*-
def normal_average(start, end):
    #0 soll bei der Berechnung des Durchschnitts float sein.Initialisierung auf 0
    sum = 0.0
    size = end - start + 1
    for i in range(start, end + 1):
        sum += i
    else:
        print "normal_average = %f"%(sum/size)

start = 1
end = 10
normal_average(start, end)
 Ergebnis
normal_average = 5.500000

Es besteht das Gefühl, dass der Teil "+ 1" nicht gut ist, aber in Ordnung python Ich bin ein Anfänger, also sind die schlechten Dinge süß

Ein weiteres Codemuster

def another_average(start, end):
    print "another_average = %f"%((start + end)/2.0)

start = 1
end = 10
another_average(start, end)
 Ergebnis
another_average = 5.500000

Ich dachte, dass der Durchschnitt der Summe aufeinanderfolgender Ganzzahlen keine Schleife sein sollte, ohne sie zu drehen, also schrieb ich sie. Ich frage mich, ob diese Art des Lösens auch eine Ameise ist Dies sollte sich mit zunehmender Anzahl auf die Verarbeitungsgeschwindigkeit auswirken.

Messung der Verarbeitungsgeschwindigkeit

Je größer die Zahl, desto größer der Unterschied. Dieses Mal werde ich versuchen, den Durchschnitt der Summen von "1 bis 100 Millionen" zu ermitteln.

# -*- coding: utf-8 -*-
import time

def normal_average(start, end):
    sum = 0.0
    size = end - start + 1
    for i in range(start, end + 1):
        sum += i
    else:
        print "normal_average = %f"%(sum/size)

def another_average(start, end):
    print "another_average = %f"%((start + end)/2.0)


#Hauptgeschäftsführer
start = 1
end = 100000000

#Messung der Ausführungszeit
normal_start_time = time.time()
normal_average(start, end)
normal_end_time = time.time()
print "execute time is %f"%(normal_end_time - normal_start_time)
print

another_start_time = time.time()
another_average(start, end)
another_end_time = time.time()
print "execute time is %f"%(another_end_time - another_start_time)
 Ergebnis
normal_average = 50000000.500000
execute time is 12.961456

another_average = 50000000.500000
execute time is 0.000006

(Ist es nicht überwältigend? Unsere Armee ...!) Offensichtlich ist die Verarbeitungsgeschwindigkeit unterschiedlich.

abschließend

Es wird gesagt, dass Sie überwältigend schnelle Ergebnisse erzielen können, wenn Sie die Logik zuerst ändern. Natürlich ist diese Lösung nicht ohne Probleme, aber zumindest ist sie schneller als eine Schleife erforderlich, um den "Durchschnitt der Summe aufeinanderfolgender Ganzzahlen" zu erhalten. Es war eine Lektion, dass es wichtig war, den Standpunkt zu ändern und das Problem zu lösen.

Recommended Posts

"Durchschnitt der Summen von 1 bis 10" und seine Ausführungsgeschwindigkeit
[Python] Drücken Sie Keras von TensorFlow und TensorFlow von c ++, um die Ausführung zu beschleunigen.
Einführung in Scapy ① (Von der Installation bis zur Ausführung von Scapy)
[Ansible Installationsverfahren] Von der Installation bis zur Ausführung des Playbooks
Von der Einführung von Pyethapp bis zur Vertragsabwicklung
Von der Bearbeitung bis zur Ausführung
Erste Schritte mit Poetry Von der Installation über die Ausführung bis hin zur Versionsverwaltung
[Für Anfänger] Zusammenfassung des Leidens an Kaggles EDA und seines Kampfes
Python (vom ersten Mal bis zur Ausführung)
Ford-Falkerson-Methode und ihre Anwendungen-Ergänzung zu Kapitel 8 der Algorithmus-Kurzreferenz-
Wie man die schöne Suppeninstanziierung beschleunigt
Von Python bis zur Verwendung von MeCab (und CaboCha)
Vom Erwerb der MuJoCo-Lizenz über die Erneuerung bis zur Ausführung
Portieren und Ändern des Doublet-Solvers von Python2 auf Python3.
Von der Aufmerksamkeit von Zero Tsuku 2 zum Transformator
Zusammenfassung von vtkThreshold (von Zeit zu Zeit aktualisiert)
Geschwindigkeitsvergleich von murmurhash3, md5 und sha1
So machen Sie VS Code auf die venv-Umgebung und ihre Vorteile aufmerksam
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
Von der Excel-Datei zur Exe und Freigabe des Tools, das CSV ausspuckt
Versuch, solide Programme schrittweise zu verbessern (Kompromiss zwischen Beschreibungsbetrag und Ausführungsgeschwindigkeit)