une petite question a propos des couts calcul pour comparer les tableaux
a la C et les std::vector.
Est-ce que quelqu'un parmi vous a deja fait des tests pour voir si les
vector sont bcp plus lents que les tabelaux C?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fabien LE LEZ
On Mon, 12 Dec 2005 20:13:43 +0100, korchkidu :
Est-ce que quelqu'un parmi vous a deja fait des tests pour voir si les vector sont bcp plus lents que les tabelaux C?
À usage identique, la différence est infime. La principale différence, c'est que les éléments d'un tableau à la C peuvent ne pas être initialisés. Exemple :
int tableau1 [TAILLE]; // Pas d'initialisation ; les valeurs sont celles qui étaient en mémoire à cet endroit-là -- autant dire que ce sont des valeurs aléatoires.
std::vector<int> tableau2 (TAILLE); // Tous les éléments sont initialisés à 0, et ça prend du temps.
Si maintenant tu demandes à vector<> des choses en plus (vérification de bornes avec at() ou par options de compilation, modification de la taille avec push_back ou autre, etc.), tu ne peux pas comparer la vitesse, puisque les tableaux à la C ne le font pas.
On Mon, 12 Dec 2005 20:13:43 +0100, korchkidu <korch_ki_du@yahoo.fr>:
Est-ce que quelqu'un parmi vous a deja fait des tests pour voir si les
vector sont bcp plus lents que les tabelaux C?
À usage identique, la différence est infime.
La principale différence, c'est que les éléments d'un tableau à la C
peuvent ne pas être initialisés. Exemple :
int tableau1 [TAILLE]; // Pas d'initialisation ; les valeurs
sont celles qui étaient en mémoire à cet endroit-là -- autant dire que
ce sont des valeurs aléatoires.
std::vector<int> tableau2 (TAILLE); // Tous les éléments sont
initialisés à 0, et ça prend du temps.
Si maintenant tu demandes à vector<> des choses en plus (vérification
de bornes avec at() ou par options de compilation, modification de la
taille avec push_back ou autre, etc.), tu ne peux pas comparer la
vitesse, puisque les tableaux à la C ne le font pas.
Est-ce que quelqu'un parmi vous a deja fait des tests pour voir si les vector sont bcp plus lents que les tabelaux C?
À usage identique, la différence est infime. La principale différence, c'est que les éléments d'un tableau à la C peuvent ne pas être initialisés. Exemple :
int tableau1 [TAILLE]; // Pas d'initialisation ; les valeurs sont celles qui étaient en mémoire à cet endroit-là -- autant dire que ce sont des valeurs aléatoires.
std::vector<int> tableau2 (TAILLE); // Tous les éléments sont initialisés à 0, et ça prend du temps.
Si maintenant tu demandes à vector<> des choses en plus (vérification de bornes avec at() ou par options de compilation, modification de la taille avec push_back ou autre, etc.), tu ne peux pas comparer la vitesse, puisque les tableaux à la C ne le font pas.
loic.actarus.joly
J'en avais fait à une époque. Si tu as des tableaux C de petite taille constante connue à la compilation, tu peux gagner le coût d'une allocation mémoire par rapport à un vector, ce qui peut avoir un impact.
Pour des tableaux dynamiques, j'ai même vu du code où les vectors étaient plus rapides.
J'en avais fait à une époque. Si tu as des tableaux C de petite
taille constante connue à la compilation, tu peux gagner le coût
d'une allocation mémoire par rapport à un vector, ce qui peut avoir
un impact.
Pour des tableaux dynamiques, j'ai même vu du code où les vectors
étaient plus rapides.
J'en avais fait à une époque. Si tu as des tableaux C de petite taille constante connue à la compilation, tu peux gagner le coût d'une allocation mémoire par rapport à un vector, ce qui peut avoir un impact.
Pour des tableaux dynamiques, j'ai même vu du code où les vectors étaient plus rapides.
Marc Boyer
Le 12-12-2005, korchkidu a écrit :
une petite question a propos des couts calcul pour comparer les tableaux a la C et les std::vector. Est-ce que quelqu'un parmi vous a deja fait des tests pour voir si les vector sont bcp plus lents que les tabelaux C?
Qu'est-ce qui te fait dire que les vector seront plus lents ?
Marc Boyer -- Entre le fort et le faible, c'est la liberte qui opprime et le droit qui libere. Henri Lacordaire, Dominicain
Le 12-12-2005, korchkidu <korch_ki_du@yahoo.fr> a écrit :
une petite question a propos des couts calcul pour comparer les tableaux
a la C et les std::vector.
Est-ce que quelqu'un parmi vous a deja fait des tests pour voir si les
vector sont bcp plus lents que les tabelaux C?
Qu'est-ce qui te fait dire que les vector seront plus lents ?
Marc Boyer
--
Entre le fort et le faible, c'est la liberte qui opprime et le droit
qui libere. Henri Lacordaire, Dominicain
une petite question a propos des couts calcul pour comparer les tableaux a la C et les std::vector. Est-ce que quelqu'un parmi vous a deja fait des tests pour voir si les vector sont bcp plus lents que les tabelaux C?
Qu'est-ce qui te fait dire que les vector seront plus lents ?
Marc Boyer -- Entre le fort et le faible, c'est la liberte qui opprime et le droit qui libere. Henri Lacordaire, Dominicain
loufoque
une petite question a propos des couts calcul pour comparer les tableaux a la C et les std::vector.
Tu as boost::array aussi si tu n'as pas besoin de la modification de taille.
une petite question a propos des couts calcul pour comparer les tableaux
a la C et les std::vector.
Tu as boost::array aussi si tu n'as pas besoin de la modification de taille.
Qu'est-ce qui te fait dire que les vector seront plus lents ? Ah, parce qu'ils sont plus rapides?
K.
korchkidu
wrote:
J'en avais fait à une époque. Si tu as des tableaux C de petite taille constante connue à la compilation, tu peux gagner le coût d'une allocation mémoire par rapport à un vector, ce qui peut avoir un impact. De quelle allocation memoire tu parles?
Je ne vois pas. Mais disons que dans le cas ou le tableau est deja tout initialise bien et que la taille ne changera plus (on ne veut que l'iterer et toussa...), que se passe t-il? Ca semble etre la meme chose apparemment...non?
K.
loic.actarus.joly@numericable.fr wrote:
J'en avais fait à une époque. Si tu as des tableaux C de petite
taille constante connue à la compilation, tu peux gagner le coût
d'une allocation mémoire par rapport à un vector, ce qui peut avoir
un impact.
De quelle allocation memoire tu parles?
Je ne vois pas.
Mais disons que dans le cas ou le tableau est deja tout initialise bien
et que la taille ne changera plus (on ne veut que l'iterer et
toussa...), que se passe t-il?
Ca semble etre la meme chose apparemment...non?
J'en avais fait à une époque. Si tu as des tableaux C de petite taille constante connue à la compilation, tu peux gagner le coût d'une allocation mémoire par rapport à un vector, ce qui peut avoir un impact. De quelle allocation memoire tu parles?
Je ne vois pas. Mais disons que dans le cas ou le tableau est deja tout initialise bien et que la taille ne changera plus (on ne veut que l'iterer et toussa...), que se passe t-il? Ca semble etre la meme chose apparemment...non?
K.
Marc Boyer
Le 14-12-2005, korchkidu a écrit :
Marc Boyer wrote:
Qu'est-ce qui te fait dire que les vector seront plus lents ? Ah, parce qu'ils sont plus rapides?
Je suis prêt à parier mon café de la pause que, pour une utilisation intensive avec redimensionnements, std::vector sera plus performant que l'implémentation que tu en feras avec les tableaux 'à la C'.
Marc Boyer -- Entre le fort et le faible, c'est la liberte qui opprime et le droit qui libere. Henri Lacordaire, Dominicain
Le 14-12-2005, korchkidu <korch_ki_du@yahoo.fr> a écrit :
Marc Boyer wrote:
Qu'est-ce qui te fait dire que les vector seront plus lents ?
Ah, parce qu'ils sont plus rapides?
Je suis prêt à parier mon café de la pause que, pour une
utilisation intensive avec redimensionnements, std::vector
sera plus performant que l'implémentation que tu en feras
avec les tableaux 'à la C'.
Marc Boyer
--
Entre le fort et le faible, c'est la liberte qui opprime et le droit
qui libere. Henri Lacordaire, Dominicain
Qu'est-ce qui te fait dire que les vector seront plus lents ? Ah, parce qu'ils sont plus rapides?
Je suis prêt à parier mon café de la pause que, pour une utilisation intensive avec redimensionnements, std::vector sera plus performant que l'implémentation que tu en feras avec les tableaux 'à la C'.
Marc Boyer -- Entre le fort et le faible, c'est la liberte qui opprime et le droit qui libere. Henri Lacordaire, Dominicain
loic.actarus.joly
Mais disons que dans le cas ou le tableau est deja tout initialise bien e t que la taille ne changera plus (on ne veut que l'iterer et toussa...), qu e se passe t-il? Ca semble etre la meme chose apparemment...non?
Pour simplement itérer, je n'ai pas vu d'avantages significatifs à l'un ou l'autre. Selon les tests, l'un ou l'autre étaient plus rapides.
-- Loïc
Mais disons que dans le cas ou le tableau est deja tout initialise bien e t que la taille ne changera plus (on ne veut que l'iterer et toussa...), qu e se passe t-il?
Ca semble etre la meme chose apparemment...non?
Pour simplement itérer, je n'ai pas vu d'avantages significatifs à
l'un ou l'autre. Selon les tests, l'un ou l'autre étaient plus
rapides.
Mais disons que dans le cas ou le tableau est deja tout initialise bien e t que la taille ne changera plus (on ne veut que l'iterer et toussa...), qu e se passe t-il? Ca semble etre la meme chose apparemment...non?
Pour simplement itérer, je n'ai pas vu d'avantages significatifs à l'un ou l'autre. Selon les tests, l'un ou l'autre étaient plus rapides.