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:
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)
ci dessous la version de code modifiée... mais finalement plus "lente" que la précédente...
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":
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)
du coup:
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!