optimisation GCC xcode 1.5

titim

Membre confirmé
30 Septembre 2004
41
0
Bonjour,
Je fais un code de monte carlo (très très objet) avec xcode, le pb c'est que ca rame mais à un point (G4 1 ghz) du type 20 Fois plus long qu'avec visualc++ sur un p4 à 2 GHZ.
mon code se compile est s'exécute sur avec gcc, visualc++ et un compilo sun.
MA question est la suivante peut améliorer la compilation avec xcode à part de demander
une compilation deployment ? Sinon je pourai passer par un makefile mais le man gcc est très très long à lire.
merci
 
Bonsoir,
dans un premier temps, tu peux déjà éditer la "Target" de ton projet et aller dans l'onglet "Build" pour modifier les paramètres par défaut et voir ce que cela donne. Tu peux jouer sur "OPTIMIZATION_CFLAGS" par exemple.
 
tu peux essayer ça sous darwin (osx)

PIC

$(CC) -ansi -g -O2 -Wall -fno-common -DPIC -o $@ -c $*.c

NON PIC

$(CC) -ansi -g -O2 -Wall -fno-common -o $@ -c $*.c
 
Deux super menbres pour me répondre, merci !
Je vais essayer vos soluces ce week end et je vous donnerai mes impressions lundi.
bon we
za plus
:D
 
En effet dans les option du target j'ai retrouvé les fameuses option -02 et -03, cela à bigrement changé le temps de calcul, merci à tous
 
Si tu fais du C++, ces flags mettent le code en "inline". Ce qui accélère le traitement à l'éxécution.

Par contre, il faut se méfier parfois des codes inlines car quelquefois, le code généré est finalement trop gros pour tenir dans le cache du processeur. Ce qui fait donc des accès mémoire plus fréquent alors que tout pourrait tenir en cache.
Ca dépend donc du code utilisé. Un code monte carlo n'est pas forcément gros en soi, tu peux donc y gagner. Ce sont les données manipulées qui prennent un peu plus de place en mémoire, mais ça, tu ne peux rien y faire.

Si tu as un G5, tu as la possibilité d'optimiser grandement les traitements en jouant sur les prédictions de branchement. Il faut regarder les boucle qui sont souvent vraie ou souvent fausse. Dans le cas d'une condition souvent vraie, on a intérêt à remplir le pipeline d'avance.