Articles of optimisation

Les expressions C constantes sont-elles évaluées au moment de la compilation ou de l’exécution?

Si j’écris une #define qui effectue une opération en utilisant d’autres constantes de préprocesseur, la valeur finale est-elle calculée chaque fois que la macro apparaît au moment de l’exécution? Cela dépend-il des optimisations du compilateur ou est-il couvert par une norme? Exemple: #define EXTERNAL_CLOCK_FREQUENCY 32768 #define TIMER_1_S EXTERNAL_CLOCK_FREQUENCY #define TIMER_100_MS TIMERB_1_S / 10 L’opération 32768/10 […]

Optimisation du compilateur MS qui remplace les variables dans une fonction?

Je ne sais pas comment expliquer le comportement que je constate, mais voilà. J’ai une fonction foo qui prend trois parameters, un pointeur, un int et un autre pointeur. Quand je me sépare de foo, je vois clairement que toutes les variables sont les valeurs qu’elles devraient être. Cependant, lorsque je quitte les déclarations de […]

boucles nestedes, parallélisation de boucle interne, réutilisation de threads

Clause de non-responsabilité: l’exemple suivant n’est qu’un exemple factice pour comprendre rapidement le problème. Si vous pensez à un problème du monde réel, pensez à toute programmation dynamic. Le problème: nous avons une masortingce n * m et nous voulons copier les éléments de la ligne précédente comme dans le code suivant: for (i = […]

Pourquoi int * float est-il plus rapide que int / int?

Je lisais que les calculs en virgule flottante sur quelque chose comme un minuscule microcontrôleur Arduino est mauvais. Donc, en essayant d’utiliser moins de flotteurs, j’ai découvert quelque chose d’étrange. // Baseline float brightness = 0.05; int result = someInt * brightness; // Takes about twice as long int brightness = 20; int result = […]

Utilisation d’opérations au niveau du bit

À quelle fréquence utilisez-vous des opérations bidirectionnelles pour effectuer une sorte d’optimisation? Dans quel genre de situations est-ce vraiment utile? Exemple: au lieu d’utiliser si: if (data[c] >= 128) //in a loop sum += data[c]; vous écrivez: int t = (data[c] – 128) >> 31; sum += ~t & data[c]; Bien sûr, en supposant que […]

Clang réciproque à 1 optimisations

Après une discussion avec des collègues, je me suis demandé si clang optimiserait deux divisions, avec une réciproque de 1, une division. const float x = a / b; //x not used elsewhere const float y = 1 / x; Théoriquement, clang pourrait optimiser const float y = b / a si x est utilisé […]

C: Amélioration des performances de la fonction avec une utilisation lourde de sin ()

J’ai une fonction C qui calcule les valeurs de 4 sinus en fonction du temps écoulé. En utilisant gprof, je pensais que cette fonction utilisait 100% (100,7% pour être exact lol) du temps CPU. void update_sines(void) { clock_gettime(CLOCK_MONOTONIC, &spec); s = spec.tv_sec; ms = spec.tv_nsec * 0.0000001; etime = concatenate((long)s, ms); int k; for (k […]

Peut-on optimiser le code pour réduire la consommation d’énergie?

Existe-t-il des techniques permettant d’optimiser le code afin de réduire la consommation élecsortingque?

Réplication des performances de multiplication de masortingce BLAS: puis-je y correspondre?

Contexte Si vous avez suivi mes publications, j’essaie de reproduire les résultats trouvés dans l’article fondamental de Kazushige Goto sur la multiplication à masortingce carrée C = AB . Mon dernier post concernant ce sujet peut être trouvé ici . Dans cette version de mon code, je suis la stratégie de superposition et d’empaquetage de […]

Stratégie Grand Central pour ouvrir plusieurs fichiers

J’ai une implémentation de travail utilisant des files d’attente de répartition Grand Central qui (1) ouvre un fichier et calcule un hachage OpenSSL DSA sur “queue1”, (2) écrit le hachage dans un nouveau fichier “side car” pour une vérification ultérieure sur “queue2” . Je voudrais ouvrir plusieurs fichiers en même temps, mais selon une logique […]