Comparez la vitesse d'ajout et de carte Python

Je vais réimprimer ce que j'ai écrit pour l'entreprise

Objectif

Vérifiez quelle est la différence entre la vitesse de traitement et l'utilisation de la mémoire du code que vous avez écrit en premier (en utilisant append) et le code indiqué dans l'examen (en utilisant la carte).

Code de vérification

Préparez un programme qui fusionne les deux tableaux et les génère. (À l'origine, c'était un programme qui fusionne les champs et les lignes extraits de la base de données et le produit en json)

Les outils utilisés pour la mesure sont les suivants.

--memory_profiler: Vous pouvez mesurer l'augmentation ou la diminution de la mémoire en unités de lignes. Vous pouvez également vérifier l'utilisation actuelle et l'incrémentation --line_profiler: la vitesse de traitement peut être mesurée ligne par ligne.

Vérification 1


from memory_profiler import profile
from line_profiler import LineProfiler


@profile(precision=8)
def main():
    a = [1, 2, 3]
    b = ['1', '2', '3']

    results = []
    for _ in range(1000):
        results.append(dict(zip(a, b)))

    for r in results:
        print(r) # {1: '1', 2: '2', 3: '3'}


if __name__ == "__main__":
    #Lors de la mesure de la mémoire
    #    main()
    
    #Lors de la comparaison des vitesses de traitement
    prof = LineProfiler()
    prof.add_function(main)
    prof.runcall(main)
    prof.print_stats(output_unit=1e-9)

Vérification 2

Sauf pour le contenu de la méthode, c'est le même que la validation 1, donc il sera omis.

def main():
    a = [1, 2, 3]
    b = ['1', '2', '3']

    results = map(dict, (zip(a, b) for _ in range(1000)))

    for r in results:
        print(r) # {1: '1', 2: '2', 3: '3'}

résultat

La quantité de données était faible au départ, mais la différence était notable.

vitesse de traitement

Vérification 1

Total time: 0.087002 s
File: append.py
Function: main at line 6

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     6                                           def main():
     7         1       4000.0   4000.0      0.0      a = [1, 2, 3]
     8         1       1000.0   1000.0      0.0      b = ['1', '2', '3']
     9                                           
    10         1          0.0      0.0      0.0      results = []
    11      1001     395000.0    394.6      0.5      for _ in range(1000):
    12      1000    1973000.0   1973.0      2.3          results.append(dict(zip(a, b)))
    13                                           
    14      1001    5854000.0   5848.2      6.7      for r in results:
    15      1000   78775000.0  78775.0     90.5          print(r)

Vérification 2

Total time: 0.069483 s
File: map.py
Function: main at line 7

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     7                                           def main():
     8         1       4000.0   4000.0      0.0      a = [1, 2, 3]
     9         1       1000.0   1000.0      0.0      b = ['1', '2', '3']
    10                                           
    11         1       2000.0   2000.0      0.0      results = map(dict, (zip(a, b) for _ in range(1000)))
    12                                           
    13      1001    8476000.0   8467.5     12.2      for r in results:
    14      1000   61000000.0  61000.0     87.8          print(r)

utilisation de la mémoire

Vérification 1

Line #    Mem usage    Increment   Line Contents
================================================
     5  38.28125000 MiB  38.28125000 MiB   @profile(precision=8)
     6                             def main():
     7  38.28515625 MiB   0.00390625 MiB       a = [1, 2, 3]
     8  38.28515625 MiB   0.00000000 MiB       b = ['1', '2', '3']
     9                             
    10  38.28515625 MiB   0.00000000 MiB       results = []
    11  38.38671875 MiB   0.00390625 MiB       for _ in range(1000):
    12  38.38671875 MiB   0.00390625 MiB           results.append(dict(zip(a, b)))
    13                             
    14  38.39453125 MiB   0.00000000 MiB       for r in results:
    15  38.39453125 MiB   0.00781250 MiB           print(r)

Vérification 2

Line #    Mem usage    Increment   Line Contents
================================================
     5  38.22656250 MiB  38.22656250 MiB   @profile(precision=8)
     6                             def main():
     7  38.23046875 MiB   0.00390625 MiB       a = [1, 2, 3]
     8  38.23046875 MiB   0.00000000 MiB       b = ['1', '2', '3']
     9                             
    10  38.23828125 MiB   0.00000000 MiB       results = map(dict, (zip(a, b) for _ in range(1000)))
    11                             
    12  38.23828125 MiB   0.00000000 MiB       for r in results:
    13  38.23828125 MiB   0.00781250 MiB           print(r)

en conclusion

S'il vous plaît laissez-moi savoir s'il y a quelque chose d'étrange.

Recommended Posts

Comparez la vitesse d'ajout et de carte Python
L'histoire de Python et l'histoire de NaN
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
J'ai remplacé le calcul numérique de Python par Rust et comparé la vitesse
Résumé des différences entre PHP et Python
La réponse de "1/2" est différente entre python2 et 3
Spécification de la plage des tableaux ruby et python
Ruby, Python et carte
le zen de Python
Ouvrez un fichier Excel en Python et coloriez la carte du Japon
Prise en compte des forces et faiblesses de Python
J'ai mesuré la vitesse de la notation d'inclusion de liste, pendant et pendant avec python2.7.
J'ai comparé la vitesse de l'écho du framework web en langage go et du flask du framework web python
J'ai comparé la vitesse des expressions régulières en Ruby, Python et Perl (version 2013)
L'histoire de Python sans opérateurs d'incrémentation et de décrémentation.
Le processus d'installation d'Atom et de l'exécution de Python
Vitesse de lecture Python netCDF4 et imbrication d'instructions for
Python - Explication et résumé de l'utilisation des 24 meilleurs packages
Visualisez la gamme d'insertions internes et externes avec python
J'ai vérifié les versions de Blender et Python
[Python] Utilisation correcte de la carte
python3 Mesurez la vitesse de traitement.
Vers la retraite de Python2
Comparons les types de tableaux Python
Comparez les polices de jupyter-themes
À propos des fonctionnalités de Python
Installation source et installation de Python
Le pouvoir des pandas: Python
Comparez la vitesse de lecture / écriture et la capacité de csv, pickle, joblib, parquet dans un environnement python
Le résultat de la création d'un album de cartes de jeunes mariés italiens en Python et de son partage
J'ai comparé la vitesse de la référence du python dans la liste et la référence de l'inclusion du dictionnaire faite à partir de la liste dans.
[Python] Fonctionnalisation de la formule de Heron et calcul de la surface maximale
[Maya Python] Écraser le contenu du script 1 ~ Camera Speed Editor
L'histoire de Python et l'histoire de NaN
Le processus de création et d'amélioration du code Python orienté objet
Le websocket de toio (nodejs) et python / websocket ne se connecte pas.
Je veux connaître la nature de Python et pip
[Astuces] Problèmes et solutions dans le développement de python + kivy
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Installer SciPy et matplotlib (Python)
[Python] La pierre d'achoppement de l'importation
First Python 3 ~ Le début de la répétition ~
Existence du point de vue de Python
pyenv-changer la version python de virtualenv
[Python] Ajuster la norme de la carte des couleurs
Ceci et cela des propriétés python
[Python] Comprendre le potentiel_field_planning de Python Robotics
Revue des bases de Python (FizzBuzz)
Comparez les boucles de tableau Python et JavaScript
Comparaison de la vitesse de la perspective XML Python
mappe de traitement de chaîne python et lambda
Coexistence de Python2 et 3 avec CircleCI (1.0)
À propos de la liste de base des bases de Python
Résumé des index et des tranches Python
Réputation des livres Python et des livres de référence
Apprenez les bases de Python ① Débutants élémentaires
Comptez bien le nombre de caractères thaïlandais et arabes en Python