Bonjour,
Dans un soft que je developpe actuellement, j'ai une section de code qui doit pouvoir s'excuter le plus rapidement possible.
Il s'agit d'un sequenceur musical.
Dans mon architecture, il y a un objet cSequencer qui contient :
- un buffer avec les evenements � traiter
- les parametres de timing
- un vecteur de "patterns" qui sont en cours de lecture, qui contient un vecteur des diff�rentes pistes de ce pattern
- une fonction appell�e tr�s souvent qui sert � calculer le contenu du buffer.
Voici mon code (� peu pr�s, je passe les d�tails)
Actuellement, j'ai ceci comme impl�mentation :
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 class cSequencer { void *buffer; int paramTiming1; int paramTiming2; int paramTiming3; std::vector<cPattern*> vPatterns; void remplirBuffer(); } class cPattern { std::vector<cPiste*> vPistes; cSequencer *sequencer; // pointeur vers le sequenceur void remplirBuffer(); } class cPiste { cPattern *pattern; // pointeur vers le pattern void remplirBuffer(); }
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 void cSequencer::remplirBuffer() { std::vector<cPattern*>::const_iterator It; for(It=vPatterns.begin();It!=vPatterns.end();It++) (*It)->remplirBuffer(); } void cPattern::remplirBuffer() { std::vector<cPiste*>::const_iterator It; for(It=vPistes.begin();It!=vPistes.end();It++) (*It)->remplirBuffer(); } void cPiste::remplirBuffer() { // On calcule le contenu du buffer, en utilisant les infos de timing : pattern->sequencer->paramTiming1; pattern->sequencer->paramTiming2; pattern->sequencer->paramTiming3; // Et on remplit le buffer situé à l'adresse pointée par : pattern->sequencer->buffer; }
Questions :
-----------
1/ Est-il plus efficace de passer les variables paramTiming1,paramTiming2,paramTiming3,*buffer � chaque fonction remplirBuffer ou est-ce plus rapide de r�cuperer ces valeurs par pointeur comme je le fait actuellement ?
2/ Quel conteneur STL est le plus rapide pour parcourir toute sa liste par un it�rateur ?
Merci !
Partager