et mesurer ainsi via qlq compteurs la méthode qui consume (globalement) le plus, une fois localisée vous raffinez en mésurant ses sous fonctions (cela ne mesure toutefois que des temps > à la ms; si les méthodes sont plus rapides (ou si l'organisation globale ne permet pas d'isoler des méthodes tournant en ce temps) la méthode est inapplicable.
Sylvain.
ByB wrote on 29/07/2006 03:15:
Je suis curieux de savoir si en remplaçant deux boucles imbriquées :
par une seule boucle :
int i,j;
for (int x = 0;x<64;x++){
i = x % 8;
j = x/8;
}
la division et plus encore le modulo compte bcp plus chers que le calcul
d'indice.
remplacer 2 boucles par une (est généralement inutile) et passerait plus
par un remplacement de 'int grid[8](8]' par 'int grid[64]'.
note; si vous ne trouvez pas de profiler, vous pouvez insérer qlq
et mesurer ainsi via qlq compteurs la méthode qui consume (globalement)
le plus, une fois localisée vous raffinez en mésurant ses sous fonctions
(cela ne mesure toutefois que des temps > à la ms; si les méthodes sont
plus rapides (ou si l'organisation globale ne permet pas d'isoler des
méthodes tournant en ce temps) la méthode est inapplicable.
et mesurer ainsi via qlq compteurs la méthode qui consume (globalement) le plus, une fois localisée vous raffinez en mésurant ses sous fonctions (cela ne mesure toutefois que des temps > à la ms; si les méthodes sont plus rapides (ou si l'organisation globale ne permet pas d'isoler des méthodes tournant en ce temps) la méthode est inapplicable.
Sylvain.
Loïc Joly
On Sat, 29 Jul 2006 15:25:54 +0200, "ByB" :
En fait, je suis en train de développer un programme qui joue à l'Othello, et je remarque que l'ordinateur met pas mal de temps à trouver le coup qu'il veut jouer.
Donc, il te faut un profiler. Si tu programmes avec g++, utilise gprof. Sinon, pour Windows, j'aime assez LtProf <http://www.lw-tech.com> -- basique, mais il rend bien des services.
Visual C++, du moins à partir d'une certaine version et d'un certain prix, est aussi livré avec un profiler.
-- Loïc
On Sat, 29 Jul 2006 15:25:54 +0200, "ByB" <email@email.com>:
En fait, je suis en train de développer un programme qui joue à
l'Othello, et je remarque que l'ordinateur met pas mal de temps à
trouver le coup qu'il veut jouer.
Donc, il te faut un profiler.
Si tu programmes avec g++, utilise gprof.
Sinon, pour Windows, j'aime assez LtProf <http://www.lw-tech.com> --
basique, mais il rend bien des services.
Visual C++, du moins à partir d'une certaine version et d'un certain
prix, est aussi livré avec un profiler.
En fait, je suis en train de développer un programme qui joue à l'Othello, et je remarque que l'ordinateur met pas mal de temps à trouver le coup qu'il veut jouer.
Donc, il te faut un profiler. Si tu programmes avec g++, utilise gprof. Sinon, pour Windows, j'aime assez LtProf <http://www.lw-tech.com> -- basique, mais il rend bien des services.
Visual C++, du moins à partir d'une certaine version et d'un certain prix, est aussi livré avec un profiler.
-- Loïc
Siguisbo Calliope
Fabien LE LEZ writes:
| Donc, il te faut un profiler. | Si tu programmes avec g++, utilise gprof.
gprof avec C++, c'est pas top -- il faut linker statiquement plein de trucs autrement ça donne rien.
Vous connaissez des alternatives à gprof ? Une rapide recherche m'a ramené Quantify mais c'est commercial.
Si,-
Fabien LE LEZ <gramster@gramster.com> writes:
| Donc, il te faut un profiler.
| Si tu programmes avec g++, utilise gprof.
gprof avec C++, c'est pas top -- il faut linker statiquement plein de
trucs autrement ça donne rien.
Vous connaissez des alternatives à gprof ? Une rapide recherche m'a
ramené Quantify mais c'est commercial.
| Donc, il te faut un profiler. | Si tu programmes avec g++, utilise gprof.
gprof avec C++, c'est pas top -- il faut linker statiquement plein de trucs autrement ça donne rien.
Vous connaissez des alternatives à gprof ? Une rapide recherche m'a ramené Quantify mais c'est commercial.
Si,-
Gabriel Dos Reis
Siguisbo Calliope writes:
| > Fabien LE LEZ writes: | > | Donc, il te faut un profiler. | > | Si tu programmes avec g++, utilise gprof. | > gprof avec C++, c'est pas top -- il faut linker statiquement plein de | > trucs autrement ça donne rien. | | Vous connaissez des alternatives à gprof ? Une rapide recherche m'a | ramené Quantify mais c'est commercial.
La dernière fois que j'ai essayé, j'ai utilisé oprofile, mais (1) c'est un peu la croix et la banière ; (2) cela ne marche que sous linux.
| > Fabien LE LEZ <gramster@gramster.com> writes:
| > | Donc, il te faut un profiler.
| > | Si tu programmes avec g++, utilise gprof.
| > gprof avec C++, c'est pas top -- il faut linker statiquement plein de
| > trucs autrement ça donne rien.
|
| Vous connaissez des alternatives à gprof ? Une rapide recherche m'a
| ramené Quantify mais c'est commercial.
La dernière fois que j'ai essayé, j'ai utilisé oprofile, mais
(1) c'est un peu la croix et la banière ;
(2) cela ne marche que sous linux.
| > Fabien LE LEZ writes: | > | Donc, il te faut un profiler. | > | Si tu programmes avec g++, utilise gprof. | > gprof avec C++, c'est pas top -- il faut linker statiquement plein de | > trucs autrement ça donne rien. | | Vous connaissez des alternatives à gprof ? Une rapide recherche m'a | ramené Quantify mais c'est commercial.
La dernière fois que j'ai essayé, j'ai utilisé oprofile, mais (1) c'est un peu la croix et la banière ; (2) cela ne marche que sous linux.
-- Gaby
Jean-Marc Bourguet
"ByB" writes:
A peine arrivée chez Fabien LE LEZ, l'info suivante nous est retransmise :
On Sat, 29 Jul 2006 03:15:09 +0200, "ByB" :
je gagne quelque chose (en particulier en vitesse d'exécution du programme) ou si cela ne change rien ?
À vue de nez, ça doit varier énormément suivant le compilateur et les options de compilation. Mais il y a des chances pour que l'appel de la fonction "FaireQuelqueChose" (s'il y a bien appel, i.e. si le compilo n'a pas inliné "FaireQuelqueChose") prenne nettement plus de temps que tout le reste.
Normalement, on ne se pose pas ce genre de questions, du moins pas a priori : on programme de la façon la plus naturelle possible (ici, je pense que c'est la version à deux boucles, mais ça dépend de ton application), puis, si le besoin s'en fait sentir, on détecte les goulots d'étranglement avec un profiler.
Où puis je trouver un profiler ? Le logiciel Purify (auquel je peux avoir accès) est il un profiler ou peut-il être utilisé comme tel ?
Non. Mais Quantify en est un. Je ne sais pas s'ils sont disponibles séparément: chaque fois que j'ai eu accès à l'un, j'ai eu accès à l'autre.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
"ByB" <email@email.com> writes:
A peine arrivée chez Fabien LE LEZ, l'info suivante nous est retransmise :
On Sat, 29 Jul 2006 03:15:09 +0200, "ByB" <email@email.com>:
je gagne quelque chose (en particulier en vitesse d'exécution du
programme) ou si cela ne change rien ?
À vue de nez, ça doit varier énormément suivant le compilateur et les
options de compilation. Mais il y a des chances pour que l'appel de la
fonction "FaireQuelqueChose" (s'il y a bien appel, i.e. si le compilo
n'a pas inliné "FaireQuelqueChose") prenne nettement plus de temps que
tout le reste.
Normalement, on ne se pose pas ce genre de questions, du moins pas a
priori : on programme de la façon la plus naturelle possible (ici, je
pense que c'est la version à deux boucles, mais ça dépend de ton
application), puis, si le besoin s'en fait sentir, on détecte les
goulots d'étranglement avec un profiler.
Où puis je trouver un profiler ?
Le logiciel Purify (auquel je peux avoir accès) est il un profiler ou
peut-il être utilisé comme tel ?
Non. Mais Quantify en est un. Je ne sais pas s'ils sont
disponibles séparément: chaque fois que j'ai eu accès à
l'un, j'ai eu accès à l'autre.
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
A peine arrivée chez Fabien LE LEZ, l'info suivante nous est retransmise :
On Sat, 29 Jul 2006 03:15:09 +0200, "ByB" :
je gagne quelque chose (en particulier en vitesse d'exécution du programme) ou si cela ne change rien ?
À vue de nez, ça doit varier énormément suivant le compilateur et les options de compilation. Mais il y a des chances pour que l'appel de la fonction "FaireQuelqueChose" (s'il y a bien appel, i.e. si le compilo n'a pas inliné "FaireQuelqueChose") prenne nettement plus de temps que tout le reste.
Normalement, on ne se pose pas ce genre de questions, du moins pas a priori : on programme de la façon la plus naturelle possible (ici, je pense que c'est la version à deux boucles, mais ça dépend de ton application), puis, si le besoin s'en fait sentir, on détecte les goulots d'étranglement avec un profiler.
Où puis je trouver un profiler ? Le logiciel Purify (auquel je peux avoir accès) est il un profiler ou peut-il être utilisé comme tel ?
Non. Mais Quantify en est un. Je ne sais pas s'ils sont disponibles séparément: chaque fois que j'ai eu accès à l'un, j'ai eu accès à l'autre.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Ploc
Sylvain wrote:
ByB wrote on 29/07/2006 03:15:
int i,j; for (int x = 0;x<64;x++){ i = x % 8; j = x/8; }
la division et plus encore le modulo compte bcp plus chers que le calcul d'indice.
Et le compilateur ne fait pas tilt en voyant qu'on divise par 8? Plus generalement, je serais assez interesse par un bench relatif aux divisions...
Sylvain wrote:
ByB wrote on 29/07/2006 03:15:
int i,j;
for (int x = 0;x<64;x++){
i = x % 8;
j = x/8;
}
la division et plus encore le modulo compte bcp plus chers que le calcul
d'indice.
Et le compilateur ne fait pas tilt en voyant qu'on divise par 8?
Plus generalement, je serais assez interesse par un bench relatif aux
divisions...
int i,j; for (int x = 0;x<64;x++){ i = x % 8; j = x/8; }
la division et plus encore le modulo compte bcp plus chers que le calcul d'indice.
Et le compilateur ne fait pas tilt en voyant qu'on divise par 8? Plus generalement, je serais assez interesse par un bench relatif aux divisions...
pasde.hcyrano.spam
ByB wrote:
Merci pour vos conseils. En fait, je suis en train de développer un programme qui joue à l'Othello, et je remarque que l'ordinateur met pas mal de temps à trouver le coup qu'il veut jouer. Mon code est plein de parcours du tableau de jeu (de 8x8 cases) et je cherchais un moyen d'accélérer les choses ...
bonjours,
un prog d'othello tres bonne idee ;-)
pour ameliorer la vitesse, la premiere chose a faire est de structurer correctement les données.
pour la representation de l'othellier voir "mailbox" ou "bitboard" pour commencer. un tableau 8*8 n'est pas une bonne idée (a la limite 10*10).
ensuite si ca t'interesse j'ai plein de liens -- Bruno Causse http://perso.wanadoo.fr/othello
ByB <email@email.com> wrote:
Merci pour vos conseils.
En fait, je suis en train de développer un programme qui joue à
l'Othello, et je remarque que l'ordinateur met pas mal de temps à
trouver le coup qu'il veut jouer.
Mon code est plein de parcours du tableau de jeu (de 8x8 cases) et je
cherchais un moyen d'accélérer les choses ...
bonjours,
un prog d'othello tres bonne idee ;-)
pour ameliorer la vitesse, la premiere chose a faire est de structurer
correctement les données.
pour la representation de l'othellier voir "mailbox" ou "bitboard" pour
commencer. un tableau 8*8 n'est pas une bonne idée (a la limite 10*10).
ensuite si ca t'interesse j'ai plein de liens
--
Bruno Causse
http://perso.wanadoo.fr/othello
Merci pour vos conseils. En fait, je suis en train de développer un programme qui joue à l'Othello, et je remarque que l'ordinateur met pas mal de temps à trouver le coup qu'il veut jouer. Mon code est plein de parcours du tableau de jeu (de 8x8 cases) et je cherchais un moyen d'accélérer les choses ...
bonjours,
un prog d'othello tres bonne idee ;-)
pour ameliorer la vitesse, la premiere chose a faire est de structurer correctement les données.
pour la representation de l'othellier voir "mailbox" ou "bitboard" pour commencer. un tableau 8*8 n'est pas une bonne idée (a la limite 10*10).
ensuite si ca t'interesse j'ai plein de liens -- Bruno Causse http://perso.wanadoo.fr/othello
Alain Gaillard
Et le compilateur ne fait pas tilt en voyant qu'on divise par 8?
Normalement le compilateur va générer un décalage de bit au lieu d'un intruction div.
-- Alain
Et le compilateur ne fait pas tilt en voyant qu'on divise par 8?
Normalement le compilateur va générer un décalage de bit au lieu d'un
intruction div.