[PYTHON] "Moyenne des sommes de 1 à 10" et sa vitesse d'exécution

introduction

L'autre jour, j'ai halo à python, alors je suis retourné au début et j'ai fait quelque chose comme un exercice de base J'ai essayé de faire quelque chose comme "la moyenne de la somme de 1 à 10" Introduction de la solution à ce moment-là

Code de modèle normal

# -*- coding: utf-8 -*-
def normal_average(start, end):
    #0 pour être flottant lors du calcul de la moyenne.Initialisation à 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)
 résultat
normal_average = 5.500000

Il y a un sentiment que la partie + 1 n'est pas bonne, mais ça va python Je suis un débutant, donc les mauvaises choses sont mignonnes

Un autre modèle de code

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

start = 1
end = 10
another_average(start, end)
 résultat
another_average = 5.500000

Je pensais que la moyenne de la somme des entiers consécutifs ne devrait pas être une boucle sans la tourner, alors je l'ai écrite. Je me demande si cette façon de résoudre est aussi une fourmi Cela devrait faire une différence dans la vitesse de traitement à mesure que le nombre augmente.

Mesure de la vitesse de traitement

Plus le nombre est grand, plus la différence est grande, donc cette fois je vais essayer de trouver la moyenne des sommes de «1 à 100 millions».

# -*- 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)


#Exécutif principal
start = 1
end = 100000000

#Mesure du temps d'exécution
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)
 résultat
normal_average = 50000000.500000
execute time is 12.961456

another_average = 50000000.500000
execute time is 0.000006

(N'est-ce pas écrasant? Notre armée ...!) De toute évidence, la vitesse de traitement est différente.

en conclusion

On dit que si vous changez la logique en premier lieu, vous pouvez obtenir des résultats extrêmement rapides. Bien entendu, cette solution n'est pas sans problèmes, mais au moins elle est nécessaire plus rapidement que le bouclage pour obtenir la "moyenne de la somme des entiers consécutifs". C'était une leçon qu'il était important de changer de point de vue et de résoudre le problème.

Recommended Posts

"Moyenne des sommes de 1 à 10" et sa vitesse d'exécution
[Python] Hit Keras depuis TensorFlow et TensorFlow depuis c ++ pour accélérer l'exécution.
Introduction à Scapy ① (De l'installation à l'exécution de Scapy)
[Procédure d'installation Ansible] De l'installation à l'exécution du playbook
De l'introduction de pyethapp à l'exécution du contrat
De l'édition à l'exécution
Premiers pas avec Poetry De l'installation à l'exécution et à la gestion des versions
[Pour les débutants] Résumé de la souffrance de l'AED de Kaggle et de sa lutte
Python (de la première fois à l'exécution)
Méthode Ford-Falkerson et ses applications - Supplément au chapitre 8 de la référence rapide de l'algorithme -
Comment accélérer la belle instanciation de soupe
De Python à l'utilisation de MeCab (et CaboCha)
De l'acquisition de la licence MuJoCo, du renouvellement à l'exécution
Portage et modification du solveur de doublets de python2 vers python3.
De l'attention de Zero Tsuku 2 au transformateur
Résumé de vtkThreshold (mis à jour de temps en temps)
Comparaison de vitesse de murmurhash3, md5 et sha1
Comment sensibiliser VS Code à l'environnement venv et à ses avantages
[Python] De l'analyse morphologique des données CSV à la sortie CSV et à l'affichage graphique [GiNZA]
Du fichier Excel à l'exe et sortie de l'outil qui crache le CSV
Tentative d'améliorer progressivement les programmes solides (compromis entre le montant de la description et la vitesse d'exécution)