Bonjour
je ne comprend pas cette directive.
Quelqu'un peut il m'expliquer SVP merci
Bonjour
je ne comprend pas cette directive.
Quelqu'un peut il m'expliquer SVP merci
Si je dis pas de bêtises, ça te permet de déclarer des directives spécifiques a un compilateur particulier par exemple. En fait, #pragma est ignoré si la directive n'est pas reconnu par ton compilateur donc ça permet de faire une directive pour un compilateur particulier et pour les autres compilateurs cette directive sera purement ignoré.
Salut,
Comme le dit AuraHxC, #pragma est une directive de compilation à l'adresse du compilateur. Ce qui suit le pragma n'est pas standardisé et dépend du compilateur. Donc pour répondre à ta question (optimisation avec #pragma), il faudrait savoir ce qui suit cette directive et quel compilateur tu utilises. Il y a aussi OpenMP qui utilise les pragma.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Bonjour
Merci pour les réponse
Voici un #pragma du compilo
Quelqu'un peut m'expliquer à quoi il sert?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #pragma loop_count -------------------------------------------------------------------------------- This pragma enables the programmer to inform the compiler about a loops iteration count. The compiler is able to make more reliable decisions about the optimization strategy for a loop if it knows the iteration count range. If you know that the loop count is always a multiple of some constant, this can also be useful as it allows a loop to be partially unrolled or vectorized without the need for conditionally-executed iterations. Knowledge of the minimum trip count may allow the compiler to omit the guards that are usually required after software pipelining. Any of the parameters of the pragma that are unknown may be left blank. The following is an example of the loop_count pragma: // GOOD: the loop_count pragma gives compiler helpful information to assist optimization #pragma loop_count(/*minimum*/ 40, /*maximum*/ 100, /*modulo*/ 4) for (i=0; i<n; i++) a[i] = b[i];
Merci
Salut,
Il faut savoir que l'exécution d'une boucle sera toujours plus rapide si... on la "déroule" (comprend: si on recopie les instructions en faisant varier le compteur plutôt qu'en testant la valeur de celui-ci).
La raison est simple: on évite un test et le "saut" vers le début de la boucle
Le code que tu présente va essayer de limiter les sauts au niveau du code généré en déroulant tout ou partie de cette boucle.
Cela se fera au détriment de la taille de l'exécutable (il y aura quelques instructions de plus dans celui-ci), mais apportera un gain substantiel en terme de rapidité d'exécution![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Partager