Auteur Sujet: Optimizing software in C++  (Lu 2365 fois)

0 Membres et 1 Invité sur ce sujet

exellent cours sur l'optimisation de code c++

This is the fourth in a series of five manuals:
1. Optimizing software in C++: An optimization guide for Windows, Linux and Mac
platforms.
2. Optimizing subroutines in assembly language: An optimization guide for x86 platforms.
3. The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly
programmers and compiler makers.
4. Instruction tables: Lists of instruction latencies, throughputs and micro-operation
breakdowns for Intel, AMD and VIA CPUs.
5. Calling conventions for different C++ compilers and operating systems.
Instruction tables


http://www.agner.org/optimize/optimizing_cpp.pdf

et celui ci aussi

The microarchitecture of Intel, AMD and
VIA CPUs
An optimization guide for assembly programmers and
compiler makers

http://www.agner.org/optimize/microarchitecture.pdf

ya d'autres cours sur l'assembleur aussi

http://www.agner.org/optimize/


tres bons cours, ca prend en compte les architectures modernes, tres instructif, il utilise un tres bon tools de benchmarking qu'il a fait lui meme, je crois il donne les sources quelque part, il a l'air bien callé en compilateur et architecture intel/amd, c'est bien adapté pour les environements modernes, comment optimiser meme avec des libs genre stl ou du c++ et des templates, et dans le cours sur l'assembler il explique bien aussi pour tirer meilleur partie des instructionss sse en c++

Ouais Agner Fog il sait de quoi il parle. Dommage que sa lib pour faire des memcpy et tout soit GPL.

pourquoi dommage ? :) car on peut pas l'utiliser dans un produit commercial ?

j'en avait fait un peu des libs comme ca pour faire des intros pour pas avoir a utiliser le crt et la libc, en utilisant des pointeurs alignés, mais bon pour un usage general, les libc des compilos en general elle sont deja relativement bien optimisées

il explique bien dans le tutos comment la plupart du temps le compilo peut optimiser beaucoup mieux si on utilise les optimisations globales du programme pour qu'il puisse bien inliner les fonctions et voir optimiser les succession de fonction inlinée, apparement la plupars des compilateur peuvent faire ca

le compilateur intel il peut utiliser deja le sse, et sa libc normalement elle est deja pas mal optimisée, et il peut utiliser des fonction intrinsèques ou inlinées , le compilo intel il insere souvent des appels cachés vers des fonction de sa libc pour faire certaine operations de facon optimisée, par contre apparement d'apres ce site, la libc et compilo intel on tendence a favoriser largement les processeurs intel et a defavoriser les processeur amd, car selon eux ils choissent la bonne routine en fonction du model de cpu, et il reconnai pas les cpu amd, donc la libc intel est pas forcement bien optimisée pour amd, il montre comment on peut le bypasser apparement pour lui faire utiliser quand meme le sse et les optimisation generale aussi sur amd

mais sinon en general faut mieux utiliser le compilo avec sa libC standard, il peut mieux optimiser de facon generale le programme, a part pour des operations vraiment specifique qui sont faite des millions de fois, ou les fonctions de la libc peuvent ne pas etre suffisement optimisée, ca peut valoir le coup de faire une fonction en assembler, mais en general les compilos moderne genre gcc intel compiler et visual studio et leur libc est deja relativement optimisée, apparement la libc de gcc est pas tres bien optimisée, il compare un peu tout les compilos dans le cours avec des benchmark, mais bon dans la plupart des cas faut mieux utiliser la libc du compilateur, la il utilise sa propre libC surtout pour avoir des resultat precis lors des benchmark cpu sur differente facon de faire une operation

pourquoi dommage ? :) car on peut pas l'utiliser dans un produit commercial ?

Je préfère pas rentrer dans un tel débat ;)

tut tut tut.
*techniquement*, la GPL n'empêche pas de faire des produits commerciaux qui utilisent du code sous licence GPL. C'est "juste" que ces produits commerciaux doivent alors se retrouver sous licence GPL aussi... Ok, ça c'est de la technique. La pratique c'est autre chose ;)