• [^] # Re: Who's that guy ?

    Posté par (site web personnel) . En réponse au lien Software is Way Less Performant Today. Évalué à 7.

    c'est même le genre de truc à proscrire car trop dépendant du matériel, et si faut réécrire le bout d'assembleur lorsque on nous filera une autre machine, ça risque de poser problèmes.

    Je te trouve un peu radical :) Au boulot on a des implémentations SSE2 et AVX2 pour certaines fonctions (c'est justement un encodeur vidéo), ça ne nous empêche pas de fournir une version en C++ supplémentaire que le compilateur aura tout le loisir d'optimiser comme il lui chante. On vérifie ensuite à l'exécution quelle implémentation il faut brancher. Ce qui fait que nous n'avons jamais à réécrire l'assembleur quand on a de nouvelles machines. Si l'architecture est inconnue on peut toujours se rabattre sur l'implémentation C++. C'est même très confortable car nous pouvons forcer l'une ou l'autre implémentation et vérifier ainsi qu'elles donnent le bon résultat. De la même manière nous pouvons vérifier que les implémentations en assembleur sont réellement plus performantes que ce que fait le compilateur.

    Il n'y a vraiment aucun problème à écrire de l'assembleur pour des fonctions très impactantes. Ce n'est pas la seul chose à faire (les choix de structures de données sont aussi importantes) mais ce n'est pas à proscrire non plus.

    Pour donner un ordre d'idée, sur un benchmark global nous avons réduit le temps par frame de plusieurs dizaines de pourcents en passant du C à l'AVX2. À côté de cela nous avons aussi changé de compilateur et cela ne nous a fait gagner que 10% au max.