J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez

Environnement d'expérimentation

OS macOS Sierra
CPU 2.3 GHz Intel Core i7
Mémoire 16 GB 1600 MHz DDR3
Version Python 2.7.10

Expérience

Préparation

def add(list_x, list_y):                                                        
    list_x = list_x + list_y                                                    
    return list_x   

def inplace(list_x, list_y):                                                    
    list_x += list_y                                                            
    return list_x 

list_a = [[0 for x in range(10000)] for y in range(10000)]
list_b = [[0 for x in range(10000)] for y in range(10000)]

Résultat expérimental

add(list_a, list_b)
Temps d'exécution: 0.000458
id(list_a): 4391953400 -> 5530614960
------ dis.dis(add) ------
  8           0 LOAD_FAST                0 (list_a)
              3 LOAD_FAST                1 (list_b)
              6 BINARY_ADD          
              7 STORE_FAST               0 (list_a)

  9          10 LOAD_FAST                0 (list_a)
             13 RETURN_VALUE
   
  
inplace(list_a, list_b)
Temps d'exécution: 0.000285
id(list_a): 5530614960 -> 5530614960
------ dis.dis(inplace)  ------
 44           0 LOAD_FAST                0 (list_a)
              3 LOAD_FAST                1 (list_b)
              6 INPLACE_ADD         
              7 STORE_FAST               0 (list_a)

 45          10 LOAD_FAST                0 (list_a)
             13 RETURN_VALUE        

add inplace résultat
Temps d'exécution 0.000458 0.000285 en place est plus rapide
Différence de code d'octet BINARY_ADD INPLACE_ADD Vous pouvez voir qu'il a changé même avec le code d'octet
id(list_a) Il y a un changement Pas de changement add est créé en tant que nouvel objet et place se voit attribuer une valeur au même objet.

motivation

Je n'avais jamais été au courant des mouvements internes des deux parties, alors j'ai enquêté moi-même. Tant que je suis gêné quand je pensais: "Faisons-le ensemble!" ... C'est à cette époque que j'ai commencé à penser que je devrais acquérir une attitude pour comprendre ces parties.

Recommended Posts

J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez
[Python] J'ai essayé d'implémenter un tri stable, alors notez
J'ai essayé d'énumérer les différences entre java et python
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
[Introduction à Python] Quelle est la différence entre une liste et un taple?
À propos de la différence entre "==" et "is" en python
Notes J'ai recherché la création d'outils de ligne de commande en Python
Je ne suis pas sûr de la différence entre les modules, les packages et les bibliothèques, alors j'ai essayé de les organiser.
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Notez que j'étais accro à la configuration de TensowFlow
J'ai essayé de représenter graphiquement les packages installés en Python
J'ai essayé d'implémenter un pseudo pachislot en Python
Trouver des erreurs en Python
Je voulais utiliser le module de recherche d'Ansible2, mais cela a pris du temps, alors prenez note
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ②
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ④
J'ai essayé de savoir comment rationaliser le flux de travail avec Excel x Python ⑤
Je veux juste trouver l'intervalle de confiance à 95% de la différence de ratio de population en Python
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ①
J'ai utilisé Python pour découvrir les choix de rôle des 51 "Yachts" dans le monde.
Les débutants en Python ont créé un chat BOT alors j'ai essayé de résumer comment le faire
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ③
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de découvrir les grandes lignes de Big Gorilla
Découvrez la largeur apparente d'une chaîne en python
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
J'ai essayé "Comment obtenir une méthode décorée en Python"
J'ai essayé de programmer le test du chi carré en Python et Java.
J'ai créé une classe en Python et essayé de taper du canard
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
Je veux ajouter un joli complément à input () en python
(Python: OpenCV) J'ai essayé de générer une valeur indiquant la distance entre les régions tout en binarisant la vidéo en temps réel.
Différence entre list () et [] en Python
Différence entre == et est en python
les débutants en python ont essayé de le découvrir
Je veux absorber la différence entre l'instruction for sur la matrice Python + numpy et l'instruction Julia for
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai essayé de créer une fonction pour juger si les principaux stocks du monde sont l'heure d'été avec python
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé de mettre en œuvre un jeu de dilemme de prisonnier mal compris en Python
J'ai essayé de savoir si ReDoS est possible avec Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de couper une image fixe de la vidéo
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
Quand j'ai essayé de gratter en utilisant des requêtes en python, j'étais accro à SSLError, donc un mémo de contournement
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
J'ai essayé "Implémentation d'un algorithme génétique (GA) en python pour résoudre le problème du voyageur de commerce (TSP)"
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python