| OS | macOS Sierra | 
|---|---|
| CPU | 2.3 GHz Intel Core i7 | 
| Mémoire | 16 GB 1600 MHz DDR3 | 
| Version Python | 2.7.10 | 
time.time () avant et après l'appel de fonction pour mesurer le temps d'exécution par la différencedis pour vérifier le code d'octetdef 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)]
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. | 
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