Un truc de mon expérience personnelle : la plupart des optimisations
rendent le code plus clair. La meilleure façon d'optimiser un code c'est
de supprimer du code inutile, et moins il y a de code, plus c'est clair.
Un truc de mon expérience personnelle : la plupart des optimisations
rendent le code plus clair. La meilleure façon d'optimiser un code c'est
de supprimer du code inutile, et moins il y a de code, plus c'est clair.
Un truc de mon expérience personnelle : la plupart des optimisations
rendent le code plus clair. La meilleure façon d'optimiser un code c'est
de supprimer du code inutile, et moins il y a de code, plus c'est clair.
je m interroge sur la vitesse d execution entre une
comparaison et un pointeur de methode.
j ai une class dont une methode peut changer de comportement
au cours de la vie du process, mais cela rarement. je me
demandais si je devais avoir une methode unique avec un bloc
if/else ou alors un pointeur de methode sette a la methode qui
va bien.
j ai donc ecrit deux petits programmes de test, et la solution
if/else est /visiblement/ plus rapide.
et donc je me demandais:
- est ce que mon test est pertinent?
- pourquoi une telle difference de temps?
je m interroge sur la vitesse d execution entre une
comparaison et un pointeur de methode.
j ai une class dont une methode peut changer de comportement
au cours de la vie du process, mais cela rarement. je me
demandais si je devais avoir une methode unique avec un bloc
if/else ou alors un pointeur de methode sette a la methode qui
va bien.
j ai donc ecrit deux petits programmes de test, et la solution
if/else est /visiblement/ plus rapide.
et donc je me demandais:
- est ce que mon test est pertinent?
- pourquoi une telle difference de temps?
je m interroge sur la vitesse d execution entre une
comparaison et un pointeur de methode.
j ai une class dont une methode peut changer de comportement
au cours de la vie du process, mais cela rarement. je me
demandais si je devais avoir une methode unique avec un bloc
if/else ou alors un pointeur de methode sette a la methode qui
va bien.
j ai donc ecrit deux petits programmes de test, et la solution
if/else est /visiblement/ plus rapide.
et donc je me demandais:
- est ce que mon test est pertinent?
- pourquoi une telle difference de temps?
On Wed, 20 Jul 2005 18:30:57 +0200, Guillaume Desticourt
:- est ce que mon test est pertinent?
Est-ce que la différence sera réellement visible par
l'utilisateur, dans le programme final ?
Code de la manière la plus claire et lisible possible, et
occupe-toi des problèmes de performances si le programme
final est effectivement trop lent.
Si les performances ne sont pas importantes, pourquoi diable
programmer en C++ ?
On Wed, 20 Jul 2005 18:30:57 +0200, Guillaume Desticourt
<guillaume.desticourt.invalid@free.fr>:
- est ce que mon test est pertinent?
Est-ce que la différence sera réellement visible par
l'utilisateur, dans le programme final ?
Code de la manière la plus claire et lisible possible, et
occupe-toi des problèmes de performances si le programme
final est effectivement trop lent.
Si les performances ne sont pas importantes, pourquoi diable
programmer en C++ ?
On Wed, 20 Jul 2005 18:30:57 +0200, Guillaume Desticourt
:- est ce que mon test est pertinent?
Est-ce que la différence sera réellement visible par
l'utilisateur, dans le programme final ?
Code de la manière la plus claire et lisible possible, et
occupe-toi des problèmes de performances si le programme
final est effectivement trop lent.
Si les performances ne sont pas importantes, pourquoi diable
programmer en C++ ?
Et je n'ai pas encore régardé du côté C#
Et je n'ai pas encore régardé du côté C#
Et je n'ai pas encore régardé du côté C#
Le C++ a deux gros avantages :
- c'est un langage très puissant, très riche ;
Je ne trouve pas justement. Des langages comme Java, Python, Ruby, etc
dont beaucoup plus riches et supportent plein de fonctionnalité
nativement (multi-threads, graphismes, réseau, ramasse-miette, etc.)
Le C++ a deux gros avantages :
- c'est un langage très puissant, très riche ;
Je ne trouve pas justement. Des langages comme Java, Python, Ruby, etc
dont beaucoup plus riches et supportent plein de fonctionnalité
nativement (multi-threads, graphismes, réseau, ramasse-miette, etc.)
Le C++ a deux gros avantages :
- c'est un langage très puissant, très riche ;
Je ne trouve pas justement. Des langages comme Java, Python, Ruby, etc
dont beaucoup plus riches et supportent plein de fonctionnalité
nativement (multi-threads, graphismes, réseau, ramasse-miette, etc.)
On Wed, 20 Jul 2005 20:32:41 +0200, Richard Delorme
:Si les performances ne sont pas importantes
Je n'ai absolument pas dit ça.
C'est ce que je comprends.Je dis juste que tenter de bidouiller, au détriment de la
lisibilité du code, et au détriment des autres
fonctionnalités (le temps qu'on passe à essayer d'optimiser
là où ce n'est pas forcément nécessaire, on ne le passe pas
à implémenter autre chose) est une mauvaise idée.
Un truc de mon expérience personnelle : la plupart des
optimisations rendent le code plus clair. La meilleure façon
d'optimiser un code c'est de supprimer du code inutile, et
moins il y a de code, plus c'est clair. Par exemple, enlever
un test toujours vrai (donc inutile) rend le code plus lisible
et plus rapide. Et avec la quantité de code que je vois passer
et qui contient toutes sortes de choses inutiles : variables
redondantes, calculs inutilisés par la suite, etc. il y a de
quoi optimiser.
, pourquoi diable programmer en C++ ?
Le C++ a deux gros avantages :
- c'est un langage très puissant, très riche ;
Je ne trouve pas justement.
Des langages comme Java, Python, Ruby, etc dont beaucoup plus
riches et supportent plein de fonctionnalité nativement
(multi-threads, graphismes, réseau, ramasse-miette, etc.) et à
mon avis, on code beaucoup plus élégamment et rapidement avec
eux qu'en C++. Par contre leurs performances sont
lamentables...
- l'exécution des programmes est généralement rapide, ce
qui permet souvent de ne pas se préoccuper d'optimisation.
Mon raisonnement, est que, comme le C++ produit un code
rapide, le besoin de performances peu justifier sont choix. Et
ce critère oblige aussi à se préoccuper d'optimisation.Le raisonnement va assez loin : si tu as quelques Mo de
données, tu peux les charger entièrement en mémoire, dans
tes propres structures, plutôt que d'utiliser un moteur
externe de base de données, avec tous les problèmes de
déploiement que ça implique.
Ce n'est pas un exemple d'optimisation ça ?
On Wed, 20 Jul 2005 20:32:41 +0200, Richard Delorme
<abulmo@nospam.fr>:
Si les performances ne sont pas importantes
Je n'ai absolument pas dit ça.
C'est ce que je comprends.
Je dis juste que tenter de bidouiller, au détriment de la
lisibilité du code, et au détriment des autres
fonctionnalités (le temps qu'on passe à essayer d'optimiser
là où ce n'est pas forcément nécessaire, on ne le passe pas
à implémenter autre chose) est une mauvaise idée.
Un truc de mon expérience personnelle : la plupart des
optimisations rendent le code plus clair. La meilleure façon
d'optimiser un code c'est de supprimer du code inutile, et
moins il y a de code, plus c'est clair. Par exemple, enlever
un test toujours vrai (donc inutile) rend le code plus lisible
et plus rapide. Et avec la quantité de code que je vois passer
et qui contient toutes sortes de choses inutiles : variables
redondantes, calculs inutilisés par la suite, etc. il y a de
quoi optimiser.
, pourquoi diable programmer en C++ ?
Le C++ a deux gros avantages :
- c'est un langage très puissant, très riche ;
Je ne trouve pas justement.
Des langages comme Java, Python, Ruby, etc dont beaucoup plus
riches et supportent plein de fonctionnalité nativement
(multi-threads, graphismes, réseau, ramasse-miette, etc.) et à
mon avis, on code beaucoup plus élégamment et rapidement avec
eux qu'en C++. Par contre leurs performances sont
lamentables...
- l'exécution des programmes est généralement rapide, ce
qui permet souvent de ne pas se préoccuper d'optimisation.
Mon raisonnement, est que, comme le C++ produit un code
rapide, le besoin de performances peu justifier sont choix. Et
ce critère oblige aussi à se préoccuper d'optimisation.
Le raisonnement va assez loin : si tu as quelques Mo de
données, tu peux les charger entièrement en mémoire, dans
tes propres structures, plutôt que d'utiliser un moteur
externe de base de données, avec tous les problèmes de
déploiement que ça implique.
Ce n'est pas un exemple d'optimisation ça ?
On Wed, 20 Jul 2005 20:32:41 +0200, Richard Delorme
:Si les performances ne sont pas importantes
Je n'ai absolument pas dit ça.
C'est ce que je comprends.Je dis juste que tenter de bidouiller, au détriment de la
lisibilité du code, et au détriment des autres
fonctionnalités (le temps qu'on passe à essayer d'optimiser
là où ce n'est pas forcément nécessaire, on ne le passe pas
à implémenter autre chose) est une mauvaise idée.
Un truc de mon expérience personnelle : la plupart des
optimisations rendent le code plus clair. La meilleure façon
d'optimiser un code c'est de supprimer du code inutile, et
moins il y a de code, plus c'est clair. Par exemple, enlever
un test toujours vrai (donc inutile) rend le code plus lisible
et plus rapide. Et avec la quantité de code que je vois passer
et qui contient toutes sortes de choses inutiles : variables
redondantes, calculs inutilisés par la suite, etc. il y a de
quoi optimiser.
, pourquoi diable programmer en C++ ?
Le C++ a deux gros avantages :
- c'est un langage très puissant, très riche ;
Je ne trouve pas justement.
Des langages comme Java, Python, Ruby, etc dont beaucoup plus
riches et supportent plein de fonctionnalité nativement
(multi-threads, graphismes, réseau, ramasse-miette, etc.) et à
mon avis, on code beaucoup plus élégamment et rapidement avec
eux qu'en C++. Par contre leurs performances sont
lamentables...
- l'exécution des programmes est généralement rapide, ce
qui permet souvent de ne pas se préoccuper d'optimisation.
Mon raisonnement, est que, comme le C++ produit un code
rapide, le besoin de performances peu justifier sont choix. Et
ce critère oblige aussi à se préoccuper d'optimisation.Le raisonnement va assez loin : si tu as quelques Mo de
données, tu peux les charger entièrement en mémoire, dans
tes propres structures, plutôt que d'utiliser un moteur
externe de base de données, avec tous les problèmes de
déploiement que ça implique.
Ce n'est pas un exemple d'optimisation ça ?
si tu as quelques Mo de données, tu peux les charger
entièrement en mémoire, dans tes propres structures, plutôt que
d'utiliser un moteur externe de base de données, avec tous les
problèmes de déploiement que ça implique.
Ce n'est pas un exemple d'optimisation ça ?
si tu as quelques Mo de données, tu peux les charger
entièrement en mémoire, dans tes propres structures, plutôt que
d'utiliser un moteur externe de base de données, avec tous les
problèmes de déploiement que ça implique.
Ce n'est pas un exemple d'optimisation ça ?
si tu as quelques Mo de données, tu peux les charger
entièrement en mémoire, dans tes propres structures, plutôt que
d'utiliser un moteur externe de base de données, avec tous les
problèmes de déploiement que ça implique.
Ce n'est pas un exemple d'optimisation ça ?
On Wed, 20 Jul 2005 18:30:57 +0200, Guillaume Desticourt
:- est ce que mon test est pertinent?
Est-ce que la différence sera réellement visible par
l'utilisateur, dans le programme final ?
je ne sais pas. la en faisant un boucle de 1000000000
iterations, la difference est visible a l oeil nu. maintenant
je n ai aucune idee du volume de donnees que mon programme
aura a traiter.
mais la difference de temps d executions des deux programmes
de test est tellement enorme que je me dis qu'il doit y avoir
une erreur.Code de la manière la plus claire et lisible possible, et
occupe-toi des problèmes de performances si le programme
final est effectivement trop lent.
heu bof, je trouve plus logique de viser le resultat desire
plutot qu'appliquer des rustines et me retrouver avec un code
- encore plus - illisible.
Surtout que ca se fera a coup sur beaucoup plus tard, et tout
aussi surement par quelqu'un d'autre qui ne comprendra pas mon
code...
On Wed, 20 Jul 2005 18:30:57 +0200, Guillaume Desticourt
<guillaume.desticourt.invalid@free.fr>:
- est ce que mon test est pertinent?
Est-ce que la différence sera réellement visible par
l'utilisateur, dans le programme final ?
je ne sais pas. la en faisant un boucle de 1000000000
iterations, la difference est visible a l oeil nu. maintenant
je n ai aucune idee du volume de donnees que mon programme
aura a traiter.
mais la difference de temps d executions des deux programmes
de test est tellement enorme que je me dis qu'il doit y avoir
une erreur.
Code de la manière la plus claire et lisible possible, et
occupe-toi des problèmes de performances si le programme
final est effectivement trop lent.
heu bof, je trouve plus logique de viser le resultat desire
plutot qu'appliquer des rustines et me retrouver avec un code
- encore plus - illisible.
Surtout que ca se fera a coup sur beaucoup plus tard, et tout
aussi surement par quelqu'un d'autre qui ne comprendra pas mon
code...
On Wed, 20 Jul 2005 18:30:57 +0200, Guillaume Desticourt
:- est ce que mon test est pertinent?
Est-ce que la différence sera réellement visible par
l'utilisateur, dans le programme final ?
je ne sais pas. la en faisant un boucle de 1000000000
iterations, la difference est visible a l oeil nu. maintenant
je n ai aucune idee du volume de donnees que mon programme
aura a traiter.
mais la difference de temps d executions des deux programmes
de test est tellement enorme que je me dis qu'il doit y avoir
une erreur.Code de la manière la plus claire et lisible possible, et
occupe-toi des problèmes de performances si le programme
final est effectivement trop lent.
heu bof, je trouve plus logique de viser le resultat desire
plutot qu'appliquer des rustines et me retrouver avec un code
- encore plus - illisible.
Surtout que ca se fera a coup sur beaucoup plus tard, et tout
aussi surement par quelqu'un d'autre qui ne comprendra pas mon
code...
Côté vitesse de développement aussi, puisqu'il faut
développer du code à la place d'utiliser du tout fait.
C'est beaucoup plus simple à installer un
seul exécutable que d'exiger l'installation d'une base de
données à côté, avec création d'une base, le maintenance, etc.
Côté vitesse de développement aussi, puisqu'il faut
développer du code à la place d'utiliser du tout fait.
C'est beaucoup plus simple à installer un
seul exécutable que d'exiger l'installation d'une base de
données à côté, avec création d'une base, le maintenance, etc.
Côté vitesse de développement aussi, puisqu'il faut
développer du code à la place d'utiliser du tout fait.
C'est beaucoup plus simple à installer un
seul exécutable que d'exiger l'installation d'une base de
données à côté, avec création d'une base, le maintenance, etc.
je m interroge sur la vitesse d execution entre une
comparaison et un pointeur de methode.
La question est donc de savoir si ça :{
if (test->isTrue())
test->behavior1();
else
abort();
}
est plus lent que :{
(test->*behavior)();
}
Ça me semble un peu évident non ?
Appeler une fonction (vide en plus) à travers un pointeur de
fonction, ou par la fonction elle même produit à peu près les
mêmes performances.
Ajouter un autre appel de fonction (test->isTrue()) et un test
(if(...)) supplémentaire va donc logiquement réduire les
performances.
je m interroge sur la vitesse d execution entre une
comparaison et un pointeur de methode.
La question est donc de savoir si ça :
{
if (test->isTrue())
test->behavior1();
else
abort();
}
est plus lent que :
{
(test->*behavior)();
}
Ça me semble un peu évident non ?
Appeler une fonction (vide en plus) à travers un pointeur de
fonction, ou par la fonction elle même produit à peu près les
mêmes performances.
Ajouter un autre appel de fonction (test->isTrue()) et un test
(if(...)) supplémentaire va donc logiquement réduire les
performances.
je m interroge sur la vitesse d execution entre une
comparaison et un pointeur de methode.
La question est donc de savoir si ça :{
if (test->isTrue())
test->behavior1();
else
abort();
}
est plus lent que :{
(test->*behavior)();
}
Ça me semble un peu évident non ?
Appeler une fonction (vide en plus) à travers un pointeur de
fonction, ou par la fonction elle même produit à peu près les
mêmes performances.
Ajouter un autre appel de fonction (test->isTrue()) et un test
(if(...)) supplémentaire va donc logiquement réduire les
performances.