J’ai récemment rencontré une étrange désoptimisation (ou plutôt une opportunité d’optimisation manquée). Considérez cette fonction pour décompresser efficacement des tableaux d’entiers à 3 bits en entiers à 8 bits. Il décompresse 16 ints dans chaque itération de boucle: void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t = *reinterpret_cast(source); target[0] = […]
Considérons la fonction suivante: void func(bool& flag) { if(!flag) flag=true; } Il me semble que si le drapeau a une valeur booléenne valide, cela équivaudrait à la définition inconditionnelle de true , comme ceci: void func(bool& flag) { flag=true; } Pourtant, ni gcc ni clang ne l’optimisent de cette manière – tous deux génèrent les […]
Je suis dans une situation ” spéciale ” concernant l’ efficacité de mon programme. Maintenant, je suis dans une phase où je dois améliorer les performances de l’application et réduire la consommation de la batterie . Avant la question: Tout d’abord, mon application fonctionne. Cela fonctionne bien – pas d’erreurs que ce soit . Deuxièmement […]
J’ai une application intégrée avec un ISR critique qui doit parcourir un tableau de taille 256 (de préférence 1024, mais 256 est le minimum) et vérifier si une valeur correspond au contenu des tableaux. Un bool sera mis à vrai si c’est le cas. Le microcontrôleur est un kernel NXP LPC4357, ARM Cortex M4 et […]
Je suis tombé sur beaucoup de conseils d’optimisation qui disent que vous devriez marquer vos classes comme étant scellées pour obtenir des avantages de performance supplémentaires. J’ai effectué des tests pour vérifier le différentiel de performance et n’en ai trouvé aucun. Est-ce que je fais quelque chose de mal? Est-ce que je manque le cas […]
Considérez cette boucle simple: float f(float x[]) { float p = 1.0; for (int i = 0; i < 959; i++) p += 1; return p; } Si vous comstackz avec gcc 7 (snapshot) ou clang (trunk) avec -march=core-avx2 -Ofast vous obtenez quelque chose de très similaire à. .LCPI0_0: .long 1148190720 # float 960 f: […]
Le code suivant génère des résultats différents en mode débogage et en mode de publication (à l’aide de Visual Studio 2008): int _tmain(int argc, _TCHAR* argv[]) { for( int i = 0; i 255 ) { result = 255; } printf(“i:%2d, result = %3d\n”, i, result) ; } return 0; } La sortie du mode […]
Pourquoi l’API Java utilise-t-elle l’ int lorsque short ou même byte serait suffisant? Exemple: Le champ DAY_OF_WEEK de la classe Calendar utilise int . Si la différence est trop minime, alors pourquoi ces types de données ( short , int ) existent-ils?
Il me semble que cela fonctionnerait parfaitement pour une optimisation de la récursion de la queue en C et en C ++, mais pendant le débogage, je ne vois jamais une stack de trames indiquant cette optimisation. C’est plutôt bien, car la stack me dit à quel point la récursivité est profonde. Cependant, l’optimisation serait […]
Un conte de pirates La date est le 12/02/10. Les jours précédant Noël sont en train de disparaître et j’ai presque frappé un gros obstacle en tant que programmeur Windows. J’ai utilisé AQTime, j’ai essayé somnolent, shiny, et très somnolent, et en ce moment, VTune est en cours d’installation. J’ai essayé d’utiliser le profileur VS2008, […]