Bonjour,
Dans la Math Kernel Library d'Intel, les fonctions BLAS sont déclarées
comme ceci (exemple) :
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le
passage par valeur du C ? Au retour de la fonction, la variable passée
en argument ne peut pas avoir été modifiée.
Est-ce que ça aide le compilateur à optimiser quelque chose ?
Bonjour,
Dans la Math Kernel Library d'Intel, les fonctions BLAS sont déclarées
comme ceci (exemple) :
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le
passage par valeur du C ? Au retour de la fonction, la variable passée
en argument ne peut pas avoir été modifiée.
Est-ce que ça aide le compilateur à optimiser quelque chose ?
Bonjour,
Dans la Math Kernel Library d'Intel, les fonctions BLAS sont déclarées
comme ceci (exemple) :
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le
passage par valeur du C ? Au retour de la fonction, la variable passée
en argument ne peut pas avoir été modifiée.
Est-ce que ça aide le compilateur à optimiser quelque chose ?
Bonjour,
Dans la Math Kernel Library d'Intel, les fonctions BLAS sont déclarées
comme ceci (exemple) :
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le passage
par valeur du C ?
Bonjour,
Dans la Math Kernel Library d'Intel, les fonctions BLAS sont déclarées
comme ceci (exemple) :
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le passage
par valeur du C ?
Bonjour,
Dans la Math Kernel Library d'Intel, les fonctions BLAS sont déclarées
comme ceci (exemple) :
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le passage
par valeur du C ?
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le
passage par valeur du C ?
Est-ce que ça aide le compilateur à optimiser quelque chose ?
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le
passage par valeur du C ?
Est-ce que ça aide le compilateur à optimiser quelque chose ?
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le
passage par valeur du C ?
Est-ce que ça aide le compilateur à optimiser quelque chose ?
Bonjour,
Dans la Math Kernel Library d'Intel, les fonctions BLAS sont déclarées comme
ceci (exemple) :
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le passage
par valeur du C ? Au retour de la fonction, la variable passée en argument ne
peut pas avoir été modifiée.
Est-ce que ça aide le compilateur à optimiser quelque chose ?
Bonjour,
Dans la Math Kernel Library d'Intel, les fonctions BLAS sont déclarées comme
ceci (exemple) :
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le passage
par valeur du C ? Au retour de la fonction, la variable passée en argument ne
peut pas avoir été modifiée.
Est-ce que ça aide le compilateur à optimiser quelque chose ?
Bonjour,
Dans la Math Kernel Library d'Intel, les fonctions BLAS sont déclarées comme
ceci (exemple) :
float cblas_sasum(const int N, const float *X, const int incX);
Quel est l'intérêt de déclarer constants N et incX, étant donné le passage
par valeur du C ? Au retour de la fonction, la variable passée en argument ne
peut pas avoir été modifiée.
Est-ce que ça aide le compilateur à optimiser quelque chose ?
des programmeurs qui comme toi ne considèrent pas utile de fournir cette
information "const",
des programmeurs qui comme toi ne considèrent pas utile de fournir cette
information "const",
des programmeurs qui comme toi ne considèrent pas utile de fournir cette
information "const",
Autre intérêt de déclarer "const int N" : si ces objets sont passés par
référence à un sous-programme, ils devront être déclarés (const int *)
dans ce sous-programme pour que le programme soit compilable ; en
contre-partie, le compilateur pourra réutiliser une valeur en registre
sans relire l'objet en mémoire, même en présence de code « compliqué »:
for( ; test_externe(&N) ; )
utilise_registre(N); // grâce à const, N invariant
Autre intérêt de déclarer "const int N" : si ces objets sont passés par
référence à un sous-programme, ils devront être déclarés (const int *)
dans ce sous-programme pour que le programme soit compilable ; en
contre-partie, le compilateur pourra réutiliser une valeur en registre
sans relire l'objet en mémoire, même en présence de code « compliqué »:
for( ; test_externe(&N) ; )
utilise_registre(N); // grâce à const, N invariant
Autre intérêt de déclarer "const int N" : si ces objets sont passés par
référence à un sous-programme, ils devront être déclarés (const int *)
dans ce sous-programme pour que le programme soit compilable ; en
contre-partie, le compilateur pourra réutiliser une valeur en registre
sans relire l'objet en mémoire, même en présence de code « compliqué »:
for( ; test_externe(&N) ; )
utilise_registre(N); // grâce à const, N invariant
In article <jhvq79$fo4$,
Antoine Leca wrote:Autre intérêt de déclarer "const int N" : si ces objets sont passés par
référence à un sous-programme, ils devront être déclarés (const int *)
dans ce sous-programme pour que le programme soit compilable ; en
contre-partie, le compilateur pourra réutiliser une valeur en registre
sans relire l'objet en mémoire, même en présence de code « compliqué »:
for( ; test_externe(&N) ; )
utilise_registre(N); // grâce à const, N invariant
Tu t'es fait pieger par ton choix de vocabulaire, il n'y a pas de references
en C...
Le const du C est un transfuge mal adapte depuis le C++... il y a deux ou
trois gags de semantiques qui montrent que les gens qui ont fait la norme
du C n'ont pas tout compris... et puis de toutes facons, en l'absence de
surcharge, c'est tout pourri (par exemple, il est impossible d'ecrire
strchr() sans un cast).
(et maintenant que C++ a les move, l'importance des const ref est grandement
diminuee. il y avait meme des exemples anti-intuitifs dans les presentations
de going native ou passer des parametres par valeur au lieu de const reference
*amelioraient* les performances en fournissant des opportunites supplementaires
d'optimisation a la bibliotheque/compilateur).
Vu le systeme de types du C, de toutes les manieres, le compilo sera oblige
de tout verifier de toutes facons. Les const y sont, dans le meilleur des
cas, un commentaire raisonnablement verifie par le compilateur. C'est pas
totalement inutile, mais c'est loin d'etre la panacee !
In article <jhvq79$fo4$1@shakotay.alphanet.ch>,
Antoine Leca <root@localhost.invalid> wrote:
Autre intérêt de déclarer "const int N" : si ces objets sont passés par
référence à un sous-programme, ils devront être déclarés (const int *)
dans ce sous-programme pour que le programme soit compilable ; en
contre-partie, le compilateur pourra réutiliser une valeur en registre
sans relire l'objet en mémoire, même en présence de code « compliqué »:
for( ; test_externe(&N) ; )
utilise_registre(N); // grâce à const, N invariant
Tu t'es fait pieger par ton choix de vocabulaire, il n'y a pas de references
en C...
Le const du C est un transfuge mal adapte depuis le C++... il y a deux ou
trois gags de semantiques qui montrent que les gens qui ont fait la norme
du C n'ont pas tout compris... et puis de toutes facons, en l'absence de
surcharge, c'est tout pourri (par exemple, il est impossible d'ecrire
strchr() sans un cast).
(et maintenant que C++ a les move, l'importance des const ref est grandement
diminuee. il y avait meme des exemples anti-intuitifs dans les presentations
de going native ou passer des parametres par valeur au lieu de const reference
*amelioraient* les performances en fournissant des opportunites supplementaires
d'optimisation a la bibliotheque/compilateur).
Vu le systeme de types du C, de toutes les manieres, le compilo sera oblige
de tout verifier de toutes facons. Les const y sont, dans le meilleur des
cas, un commentaire raisonnablement verifie par le compilateur. C'est pas
totalement inutile, mais c'est loin d'etre la panacee !
In article <jhvq79$fo4$,
Antoine Leca wrote:Autre intérêt de déclarer "const int N" : si ces objets sont passés par
référence à un sous-programme, ils devront être déclarés (const int *)
dans ce sous-programme pour que le programme soit compilable ; en
contre-partie, le compilateur pourra réutiliser une valeur en registre
sans relire l'objet en mémoire, même en présence de code « compliqué »:
for( ; test_externe(&N) ; )
utilise_registre(N); // grâce à const, N invariant
Tu t'es fait pieger par ton choix de vocabulaire, il n'y a pas de references
en C...
Le const du C est un transfuge mal adapte depuis le C++... il y a deux ou
trois gags de semantiques qui montrent que les gens qui ont fait la norme
du C n'ont pas tout compris... et puis de toutes facons, en l'absence de
surcharge, c'est tout pourri (par exemple, il est impossible d'ecrire
strchr() sans un cast).
(et maintenant que C++ a les move, l'importance des const ref est grandement
diminuee. il y avait meme des exemples anti-intuitifs dans les presentations
de going native ou passer des parametres par valeur au lieu de const reference
*amelioraient* les performances en fournissant des opportunites supplementaires
d'optimisation a la bibliotheque/compilateur).
Vu le systeme de types du C, de toutes les manieres, le compilo sera oblige
de tout verifier de toutes facons. Les const y sont, dans le meilleur des
cas, un commentaire raisonnablement verifie par le compilateur. C'est pas
totalement inutile, mais c'est loin d'etre la panacee !
Je suis d'accord avec toi mais c'est tout de même plus propre de
signaler dans le code le fait que la valeur passée ne doit pas changer
dans l'appelé.
Je suis d'accord avec toi mais c'est tout de même plus propre de
signaler dans le code le fait que la valeur passée ne doit pas changer
dans l'appelé.
Je suis d'accord avec toi mais c'est tout de même plus propre de
signaler dans le code le fait que la valeur passée ne doit pas changer
dans l'appelé.
In article <jhvq79$fo4$,
Antoine Leca wrote:
Autre intérêt de déclarer "const int N" : si ces objets sont passés par
référence à un sous-programme, [...]
Tu t'es fait pieger par ton choix de vocabulaire, il n'y a pas de references
en C...
Le const du C est un transfuge mal adapte depuis le C++...
il y a deux ou trois gags de semantiques qui montrent que les gens
qui ont fait la norme du C n'ont pas tout compris...
et puis de toutes facons, en l'absence de surcharge, c'est tout pourri
(par exemple, il est impossible d'ecrire strchr() sans un cast).
[...] mais c'est loin d'etre la panacee !
In article <jhvq79$fo4$1@shakotay.alphanet.ch>,
Antoine Leca <root@localhost.invalid> wrote:
Autre intérêt de déclarer "const int N" : si ces objets sont passés par
référence à un sous-programme, [...]
Tu t'es fait pieger par ton choix de vocabulaire, il n'y a pas de references
en C...
Le const du C est un transfuge mal adapte depuis le C++...
il y a deux ou trois gags de semantiques qui montrent que les gens
qui ont fait la norme du C n'ont pas tout compris...
et puis de toutes facons, en l'absence de surcharge, c'est tout pourri
(par exemple, il est impossible d'ecrire strchr() sans un cast).
[...] mais c'est loin d'etre la panacee !
In article <jhvq79$fo4$,
Antoine Leca wrote:
Autre intérêt de déclarer "const int N" : si ces objets sont passés par
référence à un sous-programme, [...]
Tu t'es fait pieger par ton choix de vocabulaire, il n'y a pas de references
en C...
Le const du C est un transfuge mal adapte depuis le C++...
il y a deux ou trois gags de semantiques qui montrent que les gens
qui ont fait la norme du C n'ont pas tout compris...
et puis de toutes facons, en l'absence de surcharge, c'est tout pourri
(par exemple, il est impossible d'ecrire strchr() sans un cast).
[...] mais c'est loin d'etre la panacee !