1

Salut smile

L'autre jour j'ai essayé de compiler un programme sur mon ordi de bureau (Athlon) que j'ai développé en grande partie sur mon portable (Pentium 3)

Donc j'ai changé march=pentium3 par march=ahtlon

Le probleme c'est que j'ai été surpris de constater que sur mon athlon, si je compile avec march=pentium3, alors le programme est sensiblement plus rapide.... trifus

C'est étrange, non ???
C'est connu ?

2

-

3

je les ai tous essayés (enfin ceux listés dans le man de gcc)

man gcc

       These -m options are defined for the i386 and x86-64 family of comput-
       ers:

       -mcpu=cpu-type
           Tune to cpu-type everything applicable about the generated code,
           except for the ABI and the set of available instructions.  The
           choices for cpu-type are i386, i486, i586, i686, pentium, pentium-
           mmx, pentiumpro, pentium2, pentium3, pentium4, k6, k6-2, k6-3,
           athlon, athlon-tbird, athlon-4, athlon-xp, athlon-mp, winchip-c6,
           winchip2 and c3.

           While picking a specific cpu-type will schedule things appropri-
           ately for that particular chip, the compiler will not generate any
           code that does not run on the i386 without the -march=cpu-type
           option being used.  i586 is equivalent to pentium and i686 is
           equivalent to pentiumpro.  k6 and athlon are the AMD chips as
           opposed to the Intel ones.

       -march=cpu-type
           Generate instructions for the machine type cpu-type.  The choices
           for cpu-type are the same as for -mcpu.  Moreover, specifying
           -march=cpu-type implies -mcpu=cpu-type.

:

je crois que c'était encore plus rapide en prenant pentium pro triroll

4

PS : je suis sous cygwin, et gcc ça doit être le 3.3.1, ou qq chose comme ça.

5

L'optimisation vitesse pour un processeur moderne n'est pas une science exacte.

Je te conseille plutôt -Os -mcpu=i386...
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

bon. merci.
Enfin je compile en -03 si je me rapelle bien. (de toutes façons le prog ne fait que 70ko ou 80ko, donc ça ne change pas grand chose)
Mais je ferai quand meme un bench avec Os, on ne sait jamais après tout grin

7

Essaye avec -O2 aussi. Dans pas mal de programmes, c'est sensiblement plus rapide que -O3 (surtout en C ou l'inlinage de fonctions ne sert a rien). Sinon quelle version de GCC ?

8

ça ne change rien en 02 je crois. (ça fait qq semaines que je n'ai pas retouché à ce programme (pas le temps))

> l'inlinage de fonctions ne sert a rien
comment ça ??
Elles ne sont pas inlinées ?

>version de gcc
je ne suis pas certain, mais je crois que c'est la 3.3.1
(remarque j'avais peut etre ecrit ça dans un de mes emails, je vais vérifier, un instant)

9

quelle mémoire ! trilove
Pen^2
3.3.1 (cygming special), under Cygwin

10

Pen^2 :
> l'inlinage de fonctions ne sert a rien
comment ça ??
Elles ne sont pas inlinées ?

Je pense que c'est plutôt que les programmes C sont faits pour que même un compilateur incapable d'inliner génère du code potable... (alors que si le compilateur décide d'inliner trop de fonctions de sa propre initiative comme c'est le cas en -O3, ça augmente la taille du code et donc les probabilités que ça tienne plus dans le cache) Par contre, en C++, tout est fait pour éviter les macros et favoriser les fonctions inlines ^^ (les macros sont crades et incompatibles avec la séparation en namespaces ou l'orientation objet)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

11

L'optimasation n'a rien d'un truc scientifique alors en plus pour un code petit ... J'en parle meme pas ... a toi de te taper man gcc et de faire des tests pour voir qui sera le mieux

Désolé mais y a rien d'autres à dire de plus les 3/4 des benchs que tu trouveras ne sont pas valables

Koubiak encore desolé
"Emacs is a nice OS, but it lacks a decent text editor" - old chinese proverb