CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[discussion] Capacité d'optimisation.

dnob700
dnob700
Niveau 10
02 décembre 2005 à 16:58:37

Je suis en train d´écrire un programme qui fait des calculs assez intensif sur des vecteurs de double.

Je le compilais avec VC++ et j´atait très content du résultat (1.5 fois plus rapide que Dev C++ sur des trucs intensif).

Mais j´ai pu faire compiler mon logiciel avec le Intel C++ Compiler et là, mon logiciel est devenu 10 fois plus rapide (je n´exagère pas, c´est des mesures faites sur des temps assez long donc significatif).

Alors bien sur, j´ai lu dans leur doc que le ICC peut "multithreader" des boucles là où c´est sans risque, faire appel à des spécificité des archi avancé, "vectoriser" les calcul.Mais tout ça permet de gagner du temps pour des choses assez complexe je suppose, mais un tel gain de vitesse m´étonne alors que mon programme, pour faire des calculs intensif, n´en fait pas moins des calculs assez simple.

voilà, c´était juste pour savoir si quelqu´un a des réactions ; ou des éléments sur ce qui peut faire ce compilo pour optimiser à tel point mon programme.

JeanYvesYves
JeanYvesYves
Niveau 10
02 décembre 2005 à 17:26:06

hum ! Etrange en effet.Sous la console, tu peux taper :
cl /?
pour voir les différents flags proposés déja, par le compilateur : peut etre que dans ton cas, il faudra en rajouter/enlever

10 fois plus vite, j´ai peine a croire quand meme... A moins que tu n´aies testé sous Visual en mode "debug", as tu lancé en "debug" ou en "release" ?
Dans ce cas, oui, les différences sont enormissimes.

Ensuite apres, ça devient de l´optimisation de code en lui meme :
ne jamais faire le meme calcul dans une boucle : créer une variable temporaire hors de la boucle pour ne faire le calcul qu´une fois,
casser les for des que tu peux, etc...
apres c´est du cas pas cas :)
Essaie de voir si tu n´avais pas mis en mode "debug" !

dnob700
dnob700
Niveau 10
02 décembre 2005 à 18:05:27

non non, avec Visual j´avais déjà testé quasiment toutes les combinaisons d´optimisation possible pour trouver ce qui était le plus rapide (mais ça ne change pas grand chose, à part "global optimisation" qui ralentie énormément le programme...).

Pour la vitesse, je peut mettre à disposition les programmes compilés avec un compilo et l´autre (mais il faudra me croire sur parole quand au fait qu´ils ont été correctement compilé) mais en activant les optimisations pour P4 avec ICC c´est les résultats que j´ai obtenus (10 fois plus rapide que VC++) (je ne sais pas ce que ça donnerait sans, je n´ais pas pu tester).

godrik
godrik
Niveau 30
02 décembre 2005 à 20:03:35

en regle general VC++ compile pour i386 et n´utilise donc AUCUNE vectorisation
ici, le compilateur deroule les boucles par multiple de 4 et fait ces calculs sur 4 valeurs d´un coup, d´ou une acceleration par 4.
apres pour le reste, je ne sais pas trop, mais ca ne m´etonne aucunement, le compilaeur intel est TRES performant, mais il ne gere malheureseumenet pas tout le C++ ...
pour avoir ton explication, regarde le code assembleur généré.

Kouic
Kouic
Niveau 9
02 décembre 2005 à 20:51:06

Clair, depuis le MMX chaque nouvelle generation de processeur apporte son lot de nouvelles instructions vectoriel. En plus de cela la gestions des threads sur les processeurs INTEL est probablement la plus éfficace du lot. Malheuresement pour tier 100% de la capacité d´un processeur il faut une compilation spécial. La plus part du temps les modules de calcul spécialisé sont mis dans des Dll a parts et installé suivant l´architecture ciblée.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment