Problème de performance.

Le
Richard Delorme
Bonjour,

Je suis l'auteur d'un programme d'othello, disponible ici (y compris le
code source) :
http://abulmo.perso.neuf.fr/edax/4.0.beta/index.htm
Ce programme est écrit en C99 de façon relativement portable et compile
sous Linux, Mac OSX et MS-Windows (testé sous Vista 64 bits et Windows 7
64 bits). D'une manière assez curieuse, que je ne m'explique pas, les
performances sous Windows sont très en retrait par rapport aux autres
OS, avec une baisse de performance de l'ordre de 30%. J'ai testé
plusieurs compilateurs dont Visual C++ 2008 et 2010 (bêta), Mingw64, C
Pelles, PGO (Portland Group), sans amélioration notable (Visual C++
et gcc sont assez proche, les autres compilateurs sont plus
significativement plus lents).
D'après mes investigations, il semblerait que MS-Windows soit
comparativement assez lent au niveau des Entrées/sorties, mais mon
programme n'est pas très bavard. Pour se chronométrer, il utilise et
surveille fréquemment GetTickCount(), mais j'ai cru comprendre que cette
fonction était plutôt rapide. Le programme est aussi multitâche et peut
faire appel aux fonctions multitâches natives de Windows et utilise
assez souvent les CRITICAL_SECTION. Quelqu'un aurait-t-il une idée de
l'impact de ces sections critiques sur les performances éventuelles du
programme ?
Ou une autre idée qui pourrait expliquer cette baisse de performance
assez importante ?

PS: Si vous voulez tester le programme, il suffit de taper dans une
console :
wEdax -l 60 -h 24 -n <x> -solve problem/fforum-40-59.scr.
en remplaçant <x> par le nombre de CPU/cores que vous désirer allouer au
programme.
Sous Linux remplacer wEdax par lEdax et sous Mac OS X par mEdax.
Avec un QuadCore Q6600 à 2.4Ghz, <x> remplacé par 4, le programme met
près de 13 min. sous Windows et moins de 9 minutes sous Linux.

--
Richard
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
nico
Le #20553311
Richard Delorme wrote:
Bonjour,

Je suis l'auteur d'un programme d'othello, disponible ici (y compris le
code source) :
http://abulmo.perso.neuf.fr/edax/4.0.beta/index.htm
Ce programme est écrit en C99 de façon relativement portable et compile
sous Linux, Mac OSX et MS-Windows (testé sous Vista 64 bits et Windows 7
64 bits). D'une manière assez curieuse, que je ne m'explique pas, les
performances sous Windows sont très en retrait par rapport aux autres
OS, avec une baisse de performance de l'ordre de 30%. J'ai testé
plusieurs compilateurs dont Visual C++ 2008 et 2010 (bêta), Mingw64, C
Pelles, PGO (Portland Group),... sans amélioration notable (Visual C++
et gcc sont assez proche, les autres compilateurs sont plus
significativement plus lents).



Pour Visual, tu as testé les différents flags genre /O2 pour
l'optimisation ?
Il y a divers articles sur MSDN comme
http://msdn.microsoft.com/fr-fr/library/aa289168(VS.71).aspx
http://msdn.microsoft.com/en-us/library/aa289170(VS.71).aspx
Richard Delorme
Le #20566851
Le 14/11/2009 11:51, nico a écrit :

Richard Delorme wrote:
Je suis l'auteur d'un programme d'othello [...]
D'une manière assez curieuse, que je ne m'explique pas, les performances sous Windows sont très en retrait par rapport aux autres OS, avec une baisse de performance de l'ordre de 30%.



Pour Visual, tu as testé les différents flags genre /O2 pour l'optimisation ?



Oui. Je me contente actuellement de /Ox /GL. J'ai essayé de jouer avec
d'autres réglages, mais sans bénéfice notable.

Il y a divers articles sur MSDN comme
http://msdn.microsoft.com/fr-fr/library/aa289168(VS.71).aspx
http://msdn.microsoft.com/en-us/library/aa289170(VS.71).aspx



Le PGO (deuxième lien) n'apporte pas non plus d'amélioration mesurable
(avec les autres OS non plus d'ailleurs).

Je ne pense pas que le problème soit au niveau des options de
compilation. Entre autre parce qu'avec le même compilateur (gcc) et les
mêmes options, j'obtiens des résultats plutôt décevants sous Windows par
rapport à Linux ou Mac OS X. Je m'orienterais plus vers des fonctions
de la bibliothèques aux performances différentes, ou encore, à des
particularités de l'OS incompatible avec mon approche du programme.

Merci néanmoins de votre réponse.

--
Richard
marc
Le #20567431
On 13 nov, 21:57, Richard Delorme
Le programme est aussi multitâche et peut
faire appel aux fonctions multitâches natives de Windows et utilise
assez souvent les CRITICAL_SECTION. Quelqu'un aurait-t-il une idée de
l'impact de ces sections critiques sur les performances éventuelles du
programme ?



D'après les vieilles docs
(comme http://msdn.microsoft.com/en-us/library/ms810434.aspx )
les sections critiques sont pourtant apparemment rapides..
Publicité
Poster une réponse
Anonyme