vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
16 mai 2004 à 21:12
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 2004
-
19 mai 2004 à 22:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 19 mai 2004 à 22:57
ok merci, je vai aller voir
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 19 mai 2004 à 22:49
J'ai pas tout lu mais, ton code devrait se simplifier.
regarde la std::stack qui est sûrement un bonne exemple d'une utilisation d'une couche au dessus d'un vecteur
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 19 mai 2004 à 20:43
en fait le plus simple c'est de remplacer Type *values
par std::vector<Type> values; et ca va faire qd meme un surcouche de vector, mais ca sera toujours mieux puis que plus rapide, et ca simplifira
je dois me servir de fill_n, pour initialiser, et pour autre chose aussi?
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 19 mai 2004 à 09:34
Sinon pour le vecto, le fill_n rend le vector encore un peu plus rapide.
'Encapsuler' ? oui c'est une façon de le dire.On pourrait dire 'implémenter à l'aide' de aussi. Mais la POO est trop compliquée pour moi ;-)
PS :passée une certaine heure faut faire dodo :-)
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 19 mai 2004 à 00:32
ouai ba en fait ta raison, vector est plus rapide, meme si la c'est pas encore totalement optimiser je pense que vector est la meilleur solution
mais en fait ma classe va en quelque sorte encapsuler un vector?
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 18 mai 2004 à 23:54
ok merci c'est noté
pour me decider j'aurais voulu que vector soit plus rapide, enfin je vais continuer à faire des test
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 18 mai 2004 à 23:47
Juste ce changement pour la boucle du vector....je passe de 190 à 70
resultat j'obtient 190 pour vector et 20 pour Array2D ??
je doit mal m'y prendre ? ca me paraity enorme comme difference, je vois pas comment vector pourrait etre aussi lent ?
si tu regarde le source hesitee pas a me dire si ya des erreurs, je repete c'est tout a fait possible
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 18 mai 2004 à 23:17
oui sûrement, tu devrais poster les tests pour faire des tests de performance, je les effectuerai chez moi avec plusieurs compilo et on pourra comparer le rapport performance/temps de codage.
J'ai déjà télécharger ta source que je regarderai demain sous linux.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 18 mai 2004 à 23:13
eu oui avec la stl de vc++6.0, remarque pour le moment je dev sous vc++6.0 mias je compte passer a dev c++
(j'ai test cette classe sous devc++, mais j'ai pas encore comparer avec vector..) tu pense que ca sera plu rapide avec vector?
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 18 mai 2004 à 23:07
50% ? avec la STL de Visual C++ 6.0 ?
Ca compte pas si oui, il faut en utiliser une autre que cette erreur de programmation.
Je ferais des essais pour voir avec la code que tu avais poster déjà sur un sujet similaire je crois.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 18 mai 2004 à 23:04
optimiser sans doute, j'avait deja fait des test sur un tableau 1 dimension de quelque millier d'element et j'etais quand meme 50% plus rapide
cette classe est souple, on peut l'utiliser aussi bien comme un tableau ou comme une matrice, pour matrice je sais pas encore mais ca peut aller de 3x3, 4x4 à beaucoup plus (je me reserve cette possibilité
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 18 mai 2004 à 22:56
Sur quelle taille de matrice comptes tu utiliser ta matrice, en général vector est optimisé et fonctionnement très bien pour des tailles raisonnables quand même.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 18 mai 2004 à 22:53
pour l'instant c'est provisoir, mais au finale je n'utiliserait pas vector, au niveau performance yorai une perte
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 18 mai 2004 à 22:39
Salut,
pourquoi ( ou as-tu esssayé ) n'utilises-tu pas un simple vector pour insérer les éléments de ton tableau ?
Ta matrice n'étant plus qu'une couche une dessus du vecteur pour accèder au vecteur grâce aux deux dimensions ?
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 16 mai 2004 à 21:16
redefinition constructeur par defaut, constructeur par copie et operateur =, c'est benin mais malheuresement on c'est souvent oublié
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 16 mai 2004 à 21:12
19 mai 2004 à 22:57
19 mai 2004 à 22:49
regarde la std::stack qui est sûrement un bonne exemple d'une utilisation d'une couche au dessus d'un vecteur
19 mai 2004 à 20:43
par std::vector<Type> values; et ca va faire qd meme un surcouche de vector, mais ca sera toujours mieux puis que plus rapide, et ca simplifira
je dois me servir de fill_n, pour initialiser, et pour autre chose aussi?
19 mai 2004 à 09:34
'Encapsuler' ? oui c'est une façon de le dire.On pourrait dire 'implémenter à l'aide' de aussi. Mais la POO est trop compliquée pour moi ;-)
PS :passée une certaine heure faut faire dodo :-)
19 mai 2004 à 00:32
mais en fait ma classe va en quelque sorte encapsuler un vector?
18 mai 2004 à 23:54
pour me decider j'aurais voulu que vector soit plus rapide, enfin je vais continuer à faire des test
18 mai 2004 à 23:47
std::vector::size_type taille = v_tab.size();
for(std::vector::size_type i=0; i< taille; ++i )
{
v_tab[i]=5;
}
puis un simple -O3 sur g++ ramène les deux à 10.
18 mai 2004 à 23:34
et aussi je vais rajouterune methode qui retourne le determinant, puis l'inverse de la matrice, mais si ta des idee n'hesite pas
18 mai 2004 à 23:31
Sinon, tout le monde fait des erreurs [;)]
18 mai 2004 à 23:28
#include
#include <vector>
#include <ctime>
#include "Array2D.h"
int main()
{
const std::size_t SIZE=1000000;
unsigned beg, end;
std::vector v_tab(SIZE);
Array2D a_tab(SIZE,1);
beg=std::clock();
for(std::vector::size_type i=0; i<v_tab.size(); i++)
{
v_tab[i]=5;
}
end=std::clock()-beg;
std::cout << end << '\n';
beg=std::clock();
for(std::size_t i=0; i<a_tab.size(); i++)
{
a_tab[i]=5;
}
end=std::clock()-beg;
std::cout << end << '\n';
std::cout.flush();
std::cin.get();
}
resultat j'obtient 190 pour vector et 20 pour Array2D ??
je doit mal m'y prendre ? ca me paraity enorme comme difference, je vois pas comment vector pourrait etre aussi lent ?
si tu regarde le source hesitee pas a me dire si ya des erreurs, je repete c'est tout a fait possible
18 mai 2004 à 23:17
J'ai déjà télécharger ta source que je regarderai demain sous linux.
18 mai 2004 à 23:13
(j'ai test cette classe sous devc++, mais j'ai pas encore comparer avec vector..) tu pense que ca sera plu rapide avec vector?
18 mai 2004 à 23:07
Ca compte pas si oui, il faut en utiliser une autre que cette erreur de programmation.
Je ferais des essais pour voir avec la code que tu avais poster déjà sur un sujet similaire je crois.
18 mai 2004 à 23:04
cette classe est souple, on peut l'utiliser aussi bien comme un tableau ou comme une matrice, pour matrice je sais pas encore mais ca peut aller de 3x3, 4x4 à beaucoup plus (je me reserve cette possibilité
18 mai 2004 à 22:56
18 mai 2004 à 22:53
18 mai 2004 à 22:39
pourquoi ( ou as-tu esssayé ) n'utilises-tu pas un simple vector pour insérer les éléments de ton tableau ?
Ta matrice n'étant plus qu'une couche une dessus du vecteur pour accèder au vecteur grâce aux deux dimensions ?
16 mai 2004 à 21:16
16 mai 2004 à 21:12