Différence de temps d'execution 32/64 bits
Le
TheFrenchLeaf
Bonjour,
J'explique le problème recontré :
Je lance sur une machine 64 bits windows un programme soit en mode 64
soit en mode 32.
Lorsque je le lance en mode 32 bits il est beaucoup plus lent qu'en
mode 64.
Mon programme contient beaucoup de stl::vector (resize/reserve/
access).
Note :
Sous windows je compile avec visual 2008.
Sous linux 64 bits les timings sont correct (à peu pres les memes
temps en 32 et 64 bits).
Pensez vous qu'il s'agit d'un problème lié à la STL ? (Comme le
problème n'est rencontré que sur des machines 32 bits).
J'ai testé sur des machines windows purement 32 bits et les timings
sont lent aussi.
Merci d'avance d'engager la discussion.
Cordialement,
Pierre
J'explique le problème recontré :
Je lance sur une machine 64 bits windows un programme soit en mode 64
soit en mode 32.
Lorsque je le lance en mode 32 bits il est beaucoup plus lent qu'en
mode 64.
Mon programme contient beaucoup de stl::vector (resize/reserve/
access).
Note :
Sous windows je compile avec visual 2008.
Sous linux 64 bits les timings sont correct (à peu pres les memes
temps en 32 et 64 bits).
Pensez vous qu'il s'agit d'un problème lié à la STL ? (Comme le
problème n'est rencontré que sur des machines 32 bits).
J'ai testé sur des machines windows purement 32 bits et les timings
sont lent aussi.
Merci d'avance d'engager la discussion.
Cordialement,
Pierre

Poser une question


Quelles sont les options de compilation utilisées ?
D'une manière générale, si tu veux savoir pourquoi un programme est
lent, la seule solution fiable est d'utiliser un profiler.
Bonjour,
Merci pour tes réponses.
Connais tu un profiler gratuit sous visual 2008 ?
Note : Les options de compilation sont les options par défaut.
Il me semble que certaines versions de VS 2008 intègrent un profiler.
Sinon, LTprof est d'un prix raisonnable (et a, je crois, une version
de démo limitée dans le temps).
C'est peut-être là le problème. Si tu as un souci de performances, il
faut bien étudier toutes les options liées à l'optimisation.
A priori, le compilateur i386 et le compilateur AMD64 sont deux
compilos différents ; il ne serait pas étonnant que les options
optimales soient différentes.
Du côté des options de compilation, on voit parfois des trucs
marrants : par exemple, j'ai un programme qui n'est rapide que compilé
en -O1 ; les options -O2 et -O3, censées améliorer l'optimisation,
rendent le programme bien plus lent.
J'ai aussi vu un programme d'une centaine de lignes compiler et
fonctionner rapidement sans optimisation, mais bloquer complètement
VC++ 2008 avec /O1 (le compilateur n'arrivait pas à s'en sortir ; je
l'ai arrêté de force au bout de quelques minutes).
voir ce qui bloque.