Questions marquées «compiler-optimization»

L'optimisation du compilateur implique l'adaptation d'un compilateur pour réduire le temps d'exécution ou la taille de l'objet ou les deux. Cela peut être accompli en utilisant des arguments du compilateur (par exemple CFLAGS, LDFLAGS), des plugins de compilateur (DEHYDRA par exemple) ou des modifications directes du compilateur (comme la modification du code source).


3
L'utilisation de ce pointeur provoque une étrange désoptimisation en boucle chaude
Je suis récemment tombé sur une étrange désoptimisation (ou plutôt une opportunité d'optimisation manquée). Considérez cette fonction pour un décompactage efficace des tableaux d'entiers de 3 bits en entiers de 8 bits. Il décompresse 16 ints à chaque itération de boucle: void unpack3bit(uint8_t* target, char* source, int size) { while(size …

11
Efficacité du retour prématuré dans une fonction
C'est une situation que je rencontre fréquemment en tant que programmeur inexpérimenté et que je me demande en particulier pour un projet ambitieux et intensif en vitesse que j'essaie d'optimiser. Pour les principaux langages de type C (C, objC, C ++, Java, C #, etc.) et leurs compilateurs habituels, ces …

3
Niveaux d'optimisation de Clang
Sur gcc, le manuel explique ce -O3, -Osetc. traduire en termes d'arguments d'optimisation spécifique ( -funswitch-loops, -fcompare-elim, etc.) Je cherche les mêmes informations pour clang . J'ai regardé en ligne et dans man clanglequel ne donne que des informations générales ( -O2optimise plus que -O1, -Osoptimise pour la vitesse, ...) …



1
Pourquoi l'initialisation agrégée GCC d'un tableau remplit-elle d'abord le tout avec des zéros, y compris des éléments non nuls?
Pourquoi gcc remplit-il le tableau entier avec des zéros au lieu des 96 entiers restants uniquement? Les initialiseurs non nuls sont tous au début du tableau. void *sink; void bar() { int a[100]{1,2,3,4}; sink = a; // a escapes the function asm("":::"memory"); // and compiler memory barrier // forces the …

2
Java 8: Class.getName () ralentit la chaîne de concaténation des chaînes
Récemment, j'ai rencontré un problème concernant la concaténation de chaînes. Ce benchmark le résume: @OutputTimeUnit(TimeUnit.NANOSECONDS) public class BrokenConcatenationBenchmark { @Benchmark public String slow(Data data) { final Class<? extends Data> clazz = data.clazz; return "class " + clazz.getName(); } @Benchmark public String fast(Data data) { final Class<? extends Data> clazz = …

2
Mon compilateur a-t-il ignoré mon membre statique inutilisé de la classe thread_local?
Je veux faire un enregistrement de thread dans ma classe, donc je décide d'ajouter une vérification pour la thread_localfonctionnalité: #include <iostream> #include <thread> class Foo { public: Foo() { std::cout << "Foo()" << std::endl; } ~Foo() { std::cout << "~Foo()" << std::endl; } }; class Bar { public: Bar() { …
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.