Bonjour,
dans le but de raccourcir un code servant à tracer des courbes, j'ai essayé de remplacer des listes par un dictionnaire.
Après modification du code, je suis surpris de voir que la version du code utilisant des listes "prédéclarées" est plus rapide que la version du code utilisant un dictionnaire (voir code ci dessous avec les print qui affichent clairement une différence dans le temps de traitement)...
NB: le dictionnaire me parait pourtant intéressant puisqu'il me permet de créer des listes de data dynamiquement.
ci dessous un exemple de structure de mon code initial:
ci dessous la version de code modifiée... mais finalement plus "lente" que la précédente...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 import time import random debut=time.time() liste_courbes=["c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","c16","c17","c18","c19","c20","c21","c22","c23","c24"] liste_1x=[] liste_1y=[] liste_2x=[] liste_2y=[] liste_3x=[] liste_3y=[] liste_4x=[] liste_4y=[] liste_5x=[] liste_5y=[] for i in range(0,len(liste_courbes),1): for j in range(0,50000,1): if i == 0: x=random.random() y=time.time()-debut liste_1x.append(x) liste_1y.append(y) elif i == 1: x=random.random() y=time.time()-debut liste_2x.append(x) liste_2y.append(y) elif i == 2: x=random.random() y=time.time()-debut liste_3x.append(x) liste_3y.append(y) elif i == 3: x=random.random() y=time.time()-debut liste_4x.append(x) liste_4y.append(y) elif i == 4: x=random.random() y=time.time()-debut liste_5x.append(x) liste_5y.append(y) print(time.time()-debut)
Pourtant je l'a trouve pratique puisqu'elle est "dynamique" (pas besoin de déclarer un nombre de liste défini)
NB:dans l'exemple ci dessous j'ai gardé la liste "liste_courbes" mais cette dernière peut aussi se faire "grandir" à l'intérieur du premier "for":
du coup:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 import time import random debut=time.time() dictionnaire={} liste_courbes=["c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","c16","c17","c18","c19","c20","c21","c22","c23","c24"] debut=time.time() for i in range(0,len(liste_courbes),1): dictionnaire[liste_courbes[i]] = [] for j in range(0,50000,1): x=random.random() y=time.time()-debut dictionnaire[liste_courbes[i]].append(x) dictionnaire[liste_courbes[i]].append(y) print(time.time()-debut)
est-ce que j'utilise correctement le dictionnaire?
est-ce normal de me retrouver avec une utilisation de dictionnaire plus lente qu'avec des listes?
y a-t-il une solution pour gérer un dictionnaire plus efficacement? est-il possible de lui allouer de la mémoire spécifiquement???
est-ce que le fait de basculer le traitement/remplissage du dictionnaire dans un thread pourrait améliorer le comportement global?
merci!
Partager