cpu trop élevé avec des doubles vecteurs
Bonjour
j'utilise un double tableau de vecteurs dans un espace partagé #pragma data_seg ("SHARED") défini comme suit:
Code:
1 2
| std::vector < std::vector <double> > Tableau1
std::vector < std::vector <double> > Tableau2 |
or l'utilisation de ces deux tableaux (simple multiplication avec une variable) consomme environ 5% de mon AMD 3500+ ! En utilisant des tableaux classiques, j'arrive environ à 1% du CPU (avec tous les autres calculs)
Il y a donc 4% de perte, ce qui représente quand même 200mhz pour un simple accès tableau. :aie:
J'aimerais savoir d'où vient le problème ? des doubles vecteurs ? d'une mauvaise configuration des options de compilation ? est-ce normal pour des vectors ou bien dois-je revoir tout mon code avec des tableaux.
merci par avance.
Re: cpu trop élevé avec des doubles vecteurs
Citation:
Envoyé par kuzloka
J'aimerais savoir d'où vient le problème ? des doubles vecteurs ? d'une mauvaise configuration des options de compilation ? est-ce normal pour des vectors ou bien dois-je revoir tout mon code avec des tableaux.
Peut-être aussi de la manière dont tu utilises les vector ou de la manière dont tu as fait les mesures. Sans plus d'informations, c'est difficile de dire quoi que ce soit de raisonnable.
Comme souvent, la bonne chose à faire c'est de donner le code minimum montrant ton problème. C'est un peu de travail pour toi mais les chances ne sont pas négligeables que tu trouves tout seul ce qui ne va pas en le faisant.
Re: cpu trop élevé avec des doubles vecteurs
Citation:
Envoyé par Jean-Marc.Bourguet
Comme souvent, la bonne chose à faire c'est de donner le code minimum montrant ton problème.
les seules lignes qui me prennent toutes les ressources c'est :
Code:
1 2
| x = x * Tableau1[numsortie][sampleframes];
y = y * Tableau2[numsortie][sampleframes]; |
et
Code:
1 2
| Tableau1[numsortie][sampleframes]= thr1;
Tableau2[numsortie][sampleframes]= thr2; |
des accès basiques aux tableaux, quoi.
si je les met en commentaire, 4% de gain;
pour ce qui est du code minimum, il n'y aurait pas grand chose de plus que ces quelques lignes; j'ai mis en commentaire temporairement toutes les autres lignes de codes qui utilisaient ces tableaux et le résultat est le même
Pour ce qui est des mesures CPU, elles me semblent assez fiables parce qu'à 99% d'utilisation, tout freeze :mrgreen:
Re: cpu trop élevé avec des doubles vecteurs
Citation:
Envoyé par kuzloka
Les seules lignes qui me prennent toutes les ressources c'est :
Code:
1 2
| x = x * Tableau1[numsortie][sampleframes];
y = y * Tableau2[numsortie][sampleframes]; |
et
Code:
1 2
| Tableau1[numsortie][sampleframes]= thr1;
Tableau2[numsortie][sampleframes]= thr2; |
Il me semble très étrange que ces lignes consomment 5 x plus de CPU que l'équivalent en utilisant des tableau "C" (ce que tu as l'air d'affirmer dans ton premier message).
Citation:
Pour ce qui est des mesures CPU, elles me semblent assez fiables parce qu'à 99% d'utilisation, tout freeze :mrgreen:
Je n'ai jamais utilisé un pourcentage d'utilisation CPU comme mesure quand je me suis occupé de performance.
Je continue à penser que le problème est que soit tu ne mesures pas des choses équivalentes, soit le problème réside dans la manière de faire des mesures.