En , Jean-Marc Bourguet va escriure:"Antoine Leca" writes:Mmmmh. Cela peut justement *être* l'ABI: les structures ne sont pas
passées par valeur, mais toujours par référence. Si la structure est
modifiée dans la fonction appelée, celle-ci est priée d'en faire une
copie locale.
Pas uniquement si, toujours a cause de la possibilite d'alias.
À quoi penses-tu ?
En pxbsmevgcqo.fsf@news.bourguet.org, Jean-Marc Bourguet va escriure:
"Antoine Leca" <root@localhost.gov> writes:
Mmmmh. Cela peut justement *être* l'ABI: les structures ne sont pas
passées par valeur, mais toujours par référence. Si la structure est
modifiée dans la fonction appelée, celle-ci est priée d'en faire une
copie locale.
Pas uniquement si, toujours a cause de la possibilite d'alias.
À quoi penses-tu ?
En , Jean-Marc Bourguet va escriure:"Antoine Leca" writes:Mmmmh. Cela peut justement *être* l'ABI: les structures ne sont pas
passées par valeur, mais toujours par référence. Si la structure est
modifiée dans la fonction appelée, celle-ci est priée d'en faire une
copie locale.
Pas uniquement si, toujours a cause de la possibilite d'alias.
À quoi penses-tu ?
Marc Boyer wrote:Mais les programmeurs C ne vont-il pas etre reticents à
payer un appel de fonction pour des choses comme l'acces
à la taille ?
Je ne connais pas de cas en C ou l'appel de fonction est trop couteux si
on programme correctement (ex: eviter les while(n++ < strlen(s)){} ).
Apres avoir ete dans l'exces avec les inline (la version de OOC que tu
as en est un bon exemple), j'ai tout vire.
Sur mon portable Pentium-M a 1.5 Ghz, je peux faire environs 175000000
d'appels de fonction par seconde avec deux pointeurs en argument, un
retour de pointeur plus une bete incrementation de conteur dedans (d'une
valeur pointee). Cette architecture n'est pas specialement rapide.
Alors de mon point de vue, la bonne question est quelle est l'algorithme
qui ne sera pas domine par les mouvements memoire (ex: cache) et qui
aurait besoin d'etre plus rapide? S'il existe (??), on peut le specialiser.
Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
p->stack[n] a la meme rapidite que stack soit un tableau ou un pointeur
sur la pluspart des architectures modernes. Surtout depuis que les
languages objets se sont repandus. J'ai mesure des variations de +-5%
suivant les archis et les compilos. Completement negligeable en
comparaison de tes structures passees par valeur!
Je suis positivement étonné. Je prends note.
Real-ity is simple until you make it complex.
Je sais plus de qui s'est ni si c'est la phrase exacte, mais l'idee y
est :-)
Marc Boyer wrote:
Mais les programmeurs C ne vont-il pas etre reticents à
payer un appel de fonction pour des choses comme l'acces
à la taille ?
Je ne connais pas de cas en C ou l'appel de fonction est trop couteux si
on programme correctement (ex: eviter les while(n++ < strlen(s)){} ).
Apres avoir ete dans l'exces avec les inline (la version de OOC que tu
as en est un bon exemple), j'ai tout vire.
Sur mon portable Pentium-M a 1.5 Ghz, je peux faire environs 175000000
d'appels de fonction par seconde avec deux pointeurs en argument, un
retour de pointeur plus une bete incrementation de conteur dedans (d'une
valeur pointee). Cette architecture n'est pas specialement rapide.
Alors de mon point de vue, la bonne question est quelle est l'algorithme
qui ne sera pas domine par les mouvements memoire (ex: cache) et qui
aurait besoin d'etre plus rapide? S'il existe (??), on peut le specialiser.
Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
p->stack[n] a la meme rapidite que stack soit un tableau ou un pointeur
sur la pluspart des architectures modernes. Surtout depuis que les
languages objets se sont repandus. J'ai mesure des variations de +-5%
suivant les archis et les compilos. Completement negligeable en
comparaison de tes structures passees par valeur!
Je suis positivement étonné. Je prends note.
Real-ity is simple until you make it complex.
Je sais plus de qui s'est ni si c'est la phrase exacte, mais l'idee y
est :-)
Marc Boyer wrote:Mais les programmeurs C ne vont-il pas etre reticents à
payer un appel de fonction pour des choses comme l'acces
à la taille ?
Je ne connais pas de cas en C ou l'appel de fonction est trop couteux si
on programme correctement (ex: eviter les while(n++ < strlen(s)){} ).
Apres avoir ete dans l'exces avec les inline (la version de OOC que tu
as en est un bon exemple), j'ai tout vire.
Sur mon portable Pentium-M a 1.5 Ghz, je peux faire environs 175000000
d'appels de fonction par seconde avec deux pointeurs en argument, un
retour de pointeur plus une bete incrementation de conteur dedans (d'une
valeur pointee). Cette architecture n'est pas specialement rapide.
Alors de mon point de vue, la bonne question est quelle est l'algorithme
qui ne sera pas domine par les mouvements memoire (ex: cache) et qui
aurait besoin d'etre plus rapide? S'il existe (??), on peut le specialiser.
Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
p->stack[n] a la meme rapidite que stack soit un tableau ou un pointeur
sur la pluspart des architectures modernes. Surtout depuis que les
languages objets se sont repandus. J'ai mesure des variations de +-5%
suivant les archis et les compilos. Completement negligeable en
comparaison de tes structures passees par valeur!
Je suis positivement étonné. Je prends note.
Real-ity is simple until you make it complex.
Je sais plus de qui s'est ni si c'est la phrase exacte, mais l'idee y
est :-)
Laurent Deniau wrote:Apres avoir ete dans l'exces avec les inline (la version de OOC que tu
as en est un bon exemple), j'ai tout vire.
Sur mon portable Pentium-M a 1.5 Ghz, je peux faire environs 175000000
d'appels de fonction par seconde avec deux pointeurs en argument, un
retour de pointeur plus une bete incrementation de conteur dedans (d'une
valeur pointee). Cette architecture n'est pas specialement rapide.
Alors de mon point de vue, la bonne question est quelle est l'algorithme
qui ne sera pas domine par les mouvements memoire (ex: cache) et qui
aurait besoin d'etre plus rapide? S'il existe (??), on peut le specialiser.
Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
Tu peux me preciser ce que tu entends pas là.
Laurent Deniau wrote:
Apres avoir ete dans l'exces avec les inline (la version de OOC que tu
as en est un bon exemple), j'ai tout vire.
Sur mon portable Pentium-M a 1.5 Ghz, je peux faire environs 175000000
d'appels de fonction par seconde avec deux pointeurs en argument, un
retour de pointeur plus une bete incrementation de conteur dedans (d'une
valeur pointee). Cette architecture n'est pas specialement rapide.
Alors de mon point de vue, la bonne question est quelle est l'algorithme
qui ne sera pas domine par les mouvements memoire (ex: cache) et qui
aurait besoin d'etre plus rapide? S'il existe (??), on peut le specialiser.
Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
Tu peux me preciser ce que tu entends pas là.
Laurent Deniau wrote:Apres avoir ete dans l'exces avec les inline (la version de OOC que tu
as en est un bon exemple), j'ai tout vire.
Sur mon portable Pentium-M a 1.5 Ghz, je peux faire environs 175000000
d'appels de fonction par seconde avec deux pointeurs en argument, un
retour de pointeur plus une bete incrementation de conteur dedans (d'une
valeur pointee). Cette architecture n'est pas specialement rapide.
Alors de mon point de vue, la bonne question est quelle est l'algorithme
qui ne sera pas domine par les mouvements memoire (ex: cache) et qui
aurait besoin d'etre plus rapide? S'il existe (??), on peut le specialiser.
Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
Tu peux me preciser ce que tu entends pas là.
struct s g;
<snip; f() modifie la globale g, puis utilise son paramètre>
f(g);
struct s g;
<snip; f() modifie la globale g, puis utilise son paramètre>
f(g);
struct s g;
<snip; f() modifie la globale g, puis utilise son paramètre>
f(g);
En , Jean-Marc Bourguet va escriure:struct s g;
<snip; f() modifie la globale g, puis utilise son paramètre>f(g);
Tout le monde le dit, il ne faut pas utiliser les globales :-)))
[ Je ne me rappelle plus où j'ai vu cette idée des structures par
référence -- je n'ai rien inventé --, mais que je me souvienne, on pouvait
avoir des structures globales, et bien sûr il n'y avait rien de prévu pour
le cas que tu décrit ci-dessus. Pourtant, je ne me souviens pas que cela
pose problème dans la pratique... ]
En pxbn052hhv2.fsf@news.bourguet.org, Jean-Marc Bourguet va escriure:
struct s g;
<snip; f() modifie la globale g, puis utilise son paramètre>
f(g);
Tout le monde le dit, il ne faut pas utiliser les globales :-)))
[ Je ne me rappelle plus où j'ai vu cette idée des structures par
référence -- je n'ai rien inventé --, mais que je me souvienne, on pouvait
avoir des structures globales, et bien sûr il n'y avait rien de prévu pour
le cas que tu décrit ci-dessus. Pourtant, je ne me souviens pas que cela
pose problème dans la pratique... ]
En , Jean-Marc Bourguet va escriure:struct s g;
<snip; f() modifie la globale g, puis utilise son paramètre>f(g);
Tout le monde le dit, il ne faut pas utiliser les globales :-)))
[ Je ne me rappelle plus où j'ai vu cette idée des structures par
référence -- je n'ai rien inventé --, mais que je me souvienne, on pouvait
avoir des structures globales, et bien sûr il n'y avait rien de prévu pour
le cas que tu décrit ci-dessus. Pourtant, je ne me souviens pas que cela
pose problème dans la pratique... ]
Marc Boyer wrote:Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
Tu peux me preciser ce que tu entends pas là.
Heu sur quel point?
Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Pour le C++, je veux dire que sans inlining (implicite ou explicite),
beaucoup d'application des templates perdent de leur interet.
Marc Boyer wrote:
Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
Tu peux me preciser ce que tu entends pas là.
Heu sur quel point?
Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Pour le C++, je veux dire que sans inlining (implicite ou explicite),
beaucoup d'application des templates perdent de leur interet.
Marc Boyer wrote:Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
Tu peux me preciser ce que tu entends pas là.
Heu sur quel point?
Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Pour le C++, je veux dire que sans inlining (implicite ou explicite),
beaucoup d'application des templates perdent de leur interet.
Laurent Deniau wrote:Marc Boyer wrote:Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
Tu peux me preciser ce que tu entends pas là.
Heu sur quel point?
Le fait qu'inline ne soit utile (indispensable même)
qu'avec C++ et les templates.
Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Oui, mais un ratio 1,3 ou 2, c'est important pour certains.
Pour le C++, je veux dire que sans inlining (implicite ou explicite),
beaucoup d'application des templates perdent de leur interet.
C'est là que je ne te suis plus.
Laurent Deniau wrote:
Marc Boyer wrote:
Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
Tu peux me preciser ce que tu entends pas là.
Heu sur quel point?
Le fait qu'inline ne soit utile (indispensable même)
qu'avec C++ et les templates.
Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Oui, mais un ratio 1,3 ou 2, c'est important pour certains.
Pour le C++, je veux dire que sans inlining (implicite ou explicite),
beaucoup d'application des templates perdent de leur interet.
C'est là que je ne te suis plus.
Laurent Deniau wrote:Marc Boyer wrote:Pour moi les inlines on un sens dans tres tres peu de cas, sauf en C++
ou ils sont indispensable avec les templates.
Tu peux me preciser ce que tu entends pas là.
Heu sur quel point?
Le fait qu'inline ne soit utile (indispensable même)
qu'avec C++ et les templates.
Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Oui, mais un ratio 1,3 ou 2, c'est important pour certains.
Pour le C++, je veux dire que sans inlining (implicite ou explicite),
beaucoup d'application des templates perdent de leur interet.
C'est là que je ne te suis plus.
Le fait qu'inline ne soit utile (indispensable même)
qu'avec C++ et les templates.
Je vais faire une precision de Normand en te retournant la question:
dans quel cas en C estimes-tu que les inlines dans les headers sont
indispensables?
Pour ma part, je n'ai considere que des cas tres rares ou par exemple on
veut implementer un mecanisme similaire a un appel de fonction et ou on
veut rester proche des performances d'un appel de fonction.
Par exemple, un message dispatch a la Objective-C (voir mon thread
recent sur comp.lang.objective-c ou je precisais que je faisais du
message dispatch environ 4 fois plus rapide que les compilateurs objc
actuel mais apparemment ca n'interesse personne).
Ou une implementation des interfaces a la Java en C (les protocols dans
OOC).
Dans ces cas, on veut un mecanisme different avec des performances
proches des appels de fonction (e.g +50% pour le message dispatch et
+20% pour les protocols). Si on utilise pas l'inline, on tombe
immediatement a > +(100+X)%Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Oui, mais un ratio 1,3 ou 2, c'est important pour certains.
Des exemples concrets?
Je precise toutefois un point: l'inlining (implicite) est tres utile
dans l'implementation pour ameliorer les performances, mais je parlais
surtout de l'inlining explicite dans les interfaces (dans les headers).
Le fait qu'inline ne soit utile (indispensable même)
qu'avec C++ et les templates.
Je vais faire une precision de Normand en te retournant la question:
dans quel cas en C estimes-tu que les inlines dans les headers sont
indispensables?
Pour ma part, je n'ai considere que des cas tres rares ou par exemple on
veut implementer un mecanisme similaire a un appel de fonction et ou on
veut rester proche des performances d'un appel de fonction.
Par exemple, un message dispatch a la Objective-C (voir mon thread
recent sur comp.lang.objective-c ou je precisais que je faisais du
message dispatch environ 4 fois plus rapide que les compilateurs objc
actuel mais apparemment ca n'interesse personne).
Ou une implementation des interfaces a la Java en C (les protocols dans
OOC).
Dans ces cas, on veut un mecanisme different avec des performances
proches des appels de fonction (e.g +50% pour le message dispatch et
+20% pour les protocols). Si on utilise pas l'inline, on tombe
immediatement a > +(100+X)%
Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Oui, mais un ratio 1,3 ou 2, c'est important pour certains.
Des exemples concrets?
Je precise toutefois un point: l'inlining (implicite) est tres utile
dans l'implementation pour ameliorer les performances, mais je parlais
surtout de l'inlining explicite dans les interfaces (dans les headers).
Le fait qu'inline ne soit utile (indispensable même)
qu'avec C++ et les templates.
Je vais faire une precision de Normand en te retournant la question:
dans quel cas en C estimes-tu que les inlines dans les headers sont
indispensables?
Pour ma part, je n'ai considere que des cas tres rares ou par exemple on
veut implementer un mecanisme similaire a un appel de fonction et ou on
veut rester proche des performances d'un appel de fonction.
Par exemple, un message dispatch a la Objective-C (voir mon thread
recent sur comp.lang.objective-c ou je precisais que je faisais du
message dispatch environ 4 fois plus rapide que les compilateurs objc
actuel mais apparemment ca n'interesse personne).
Ou une implementation des interfaces a la Java en C (les protocols dans
OOC).
Dans ces cas, on veut un mecanisme different avec des performances
proches des appels de fonction (e.g +50% pour le message dispatch et
+20% pour les protocols). Si on utilise pas l'inline, on tombe
immediatement a > +(100+X)%Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Oui, mais un ratio 1,3 ou 2, c'est important pour certains.
Des exemples concrets?
Je precise toutefois un point: l'inlining (implicite) est tres utile
dans l'implementation pour ameliorer les performances, mais je parlais
surtout de l'inlining explicite dans les interfaces (dans les headers).
Laurent Deniau wrote:Le fait qu'inline ne soit utile (indispensable même)
qu'avec C++ et les templates.
Je vais faire une precision de Normand en te retournant la question:
dans quel cas en C estimes-tu que les inlines dans les headers sont
indispensables?
Hein ?
Disons que dans les codes que j'ai écris jusqu'à présent,
je n'ai *jamais* eut de problème de perfs, mais c'est plus
lié au fait que je suis pas développeur, juste enseignant.
J'ai relevé sur ce forum des gens qui disaient que c'était
indispensable (et qu'ils utilisaient static avant et que
les compilos faisaient l'inline avant que le mot n'existe)
parfois.
Disons que là, je tente des iterateurs et des accesseurs
en C, et il me semble pertinent d'en faire un static inline,
mais bon, ça reste très académique.
Pour ma part, je n'ai considere que des cas tres rares ou par exemple on
veut implementer un mecanisme similaire a un appel de fonction et ou on
veut rester proche des performances d'un appel de fonction.
C'est pas le contraire inline ? C'est pas "garder la sémantique
d'un appel de fonction mais ne pas payer un appel de fonction".
Par exemple, un message dispatch a la Objective-C (voir mon thread
recent sur comp.lang.objective-c ou je precisais que je faisais du
message dispatch environ 4 fois plus rapide que les compilateurs objc
actuel mais apparemment ca n'interesse personne).
Ou une implementation des interfaces a la Java en C (les protocols dans
OOC).
Dans ces cas, on veut un mecanisme different avec des performances
proches des appels de fonction (e.g +50% pour le message dispatch et
+20% pour les protocols). Si on utilise pas l'inline, on tombe
immediatement a > +(100+X)%Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Oui, mais un ratio 1,3 ou 2, c'est important pour certains.
Des exemples concrets?
Pas autre chose que des choses racontées...
Le principal intérêt de ce forum pour moi c'est de questionner
les gens sur leur pratique du C. La mienne n'est pas représentative.
Je precise toutefois un point: l'inlining (implicite) est tres utile
dans l'implementation pour ameliorer les performances, mais je parlais
surtout de l'inlining explicite dans les interfaces (dans les headers).
Mais qui dit implémentation dit static, non ? (Histoire de pas polluer
l'espace de noms).
Hors, le semble qu'Emmanuel racontait que les
compilateurs faisaient ça avec les static bien avant que le mot
n'apparaisse dans le langage.
Mais avec tout ça, tu ne m'as pas dit pourquoi tu considères ça
nécessaire en C++.
Laurent Deniau wrote:
Le fait qu'inline ne soit utile (indispensable même)
qu'avec C++ et les templates.
Je vais faire une precision de Normand en te retournant la question:
dans quel cas en C estimes-tu que les inlines dans les headers sont
indispensables?
Hein ?
Disons que dans les codes que j'ai écris jusqu'à présent,
je n'ai *jamais* eut de problème de perfs, mais c'est plus
lié au fait que je suis pas développeur, juste enseignant.
J'ai relevé sur ce forum des gens qui disaient que c'était
indispensable (et qu'ils utilisaient static avant et que
les compilos faisaient l'inline avant que le mot n'existe)
parfois.
Disons que là, je tente des iterateurs et des accesseurs
en C, et il me semble pertinent d'en faire un static inline,
mais bon, ça reste très académique.
Pour ma part, je n'ai considere que des cas tres rares ou par exemple on
veut implementer un mecanisme similaire a un appel de fonction et ou on
veut rester proche des performances d'un appel de fonction.
C'est pas le contraire inline ? C'est pas "garder la sémantique
d'un appel de fonction mais ne pas payer un appel de fonction".
Par exemple, un message dispatch a la Objective-C (voir mon thread
recent sur comp.lang.objective-c ou je precisais que je faisais du
message dispatch environ 4 fois plus rapide que les compilateurs objc
actuel mais apparemment ca n'interesse personne).
Ou une implementation des interfaces a la Java en C (les protocols dans
OOC).
Dans ces cas, on veut un mecanisme different avec des performances
proches des appels de fonction (e.g +50% pour le message dispatch et
+20% pour les protocols). Si on utilise pas l'inline, on tombe
immediatement a > +(100+X)%
Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Oui, mais un ratio 1,3 ou 2, c'est important pour certains.
Des exemples concrets?
Pas autre chose que des choses racontées...
Le principal intérêt de ce forum pour moi c'est de questionner
les gens sur leur pratique du C. La mienne n'est pas représentative.
Je precise toutefois un point: l'inlining (implicite) est tres utile
dans l'implementation pour ameliorer les performances, mais je parlais
surtout de l'inlining explicite dans les interfaces (dans les headers).
Mais qui dit implémentation dit static, non ? (Histoire de pas polluer
l'espace de noms).
Hors, le semble qu'Emmanuel racontait que les
compilateurs faisaient ça avec les static bien avant que le mot
n'apparaisse dans le langage.
Mais avec tout ça, tu ne m'as pas dit pourquoi tu considères ça
nécessaire en C++.
Laurent Deniau wrote:Le fait qu'inline ne soit utile (indispensable même)
qu'avec C++ et les templates.
Je vais faire une precision de Normand en te retournant la question:
dans quel cas en C estimes-tu que les inlines dans les headers sont
indispensables?
Hein ?
Disons que dans les codes que j'ai écris jusqu'à présent,
je n'ai *jamais* eut de problème de perfs, mais c'est plus
lié au fait que je suis pas développeur, juste enseignant.
J'ai relevé sur ce forum des gens qui disaient que c'était
indispensable (et qu'ils utilisaient static avant et que
les compilos faisaient l'inline avant que le mot n'existe)
parfois.
Disons que là, je tente des iterateurs et des accesseurs
en C, et il me semble pertinent d'en faire un static inline,
mais bon, ça reste très académique.
Pour ma part, je n'ai considere que des cas tres rares ou par exemple on
veut implementer un mecanisme similaire a un appel de fonction et ou on
veut rester proche des performances d'un appel de fonction.
C'est pas le contraire inline ? C'est pas "garder la sémantique
d'un appel de fonction mais ne pas payer un appel de fonction".
Par exemple, un message dispatch a la Objective-C (voir mon thread
recent sur comp.lang.objective-c ou je precisais que je faisais du
message dispatch environ 4 fois plus rapide que les compilateurs objc
actuel mais apparemment ca n'interesse personne).
Ou une implementation des interfaces a la Java en C (les protocols dans
OOC).
Dans ces cas, on veut un mecanisme different avec des performances
proches des appels de fonction (e.g +50% pour le message dispatch et
+20% pour les protocols). Si on utilise pas l'inline, on tombe
immediatement a > +(100+X)%Sur la rapidite des appels de fonctions, ce que je voulais dire c'est
que ce n'est pas ce qui predomine dans les algos ou la complexite est
correcte.
Oui, mais un ratio 1,3 ou 2, c'est important pour certains.
Des exemples concrets?
Pas autre chose que des choses racontées...
Le principal intérêt de ce forum pour moi c'est de questionner
les gens sur leur pratique du C. La mienne n'est pas représentative.
Je precise toutefois un point: l'inlining (implicite) est tres utile
dans l'implementation pour ameliorer les performances, mais je parlais
surtout de l'inlining explicite dans les interfaces (dans les headers).
Mais qui dit implémentation dit static, non ? (Histoire de pas polluer
l'espace de noms).
Hors, le semble qu'Emmanuel racontait que les
compilateurs faisaient ça avec les static bien avant que le mot
n'apparaisse dans le langage.
Mais avec tout ça, tu ne m'as pas dit pourquoi tu considères ça
nécessaire en C++.