inline et pointeur sur fonction

inline et pointeur sur fonction - C++ - Programmation

Marsh Posté le 21-05-2009 à 19:01:02    

hi,
 
Il me semble que l'on ne peut pas inliner un pointeur sur fonction ?
existe t-il une alternative aux pointeurs sur fonctions,et qui permet l'inling ?
 
Merci

Reply

Marsh Posté le 21-05-2009 à 19:01:02   

Reply

Marsh Posté le 21-05-2009 à 19:03:24    

Glock 17Pro a écrit :

hi,
 
Il me semble que l'on ne peut pas inliner un pointeur sur fonction ?
existe t-il une alternative aux pointeurs sur fonctions,et qui permet l'inling ?
 
Merci


 
 [:pingouino]  
 
Effectivement, on ne peut pas inliner un pointeur sur fonction. Tu as conscience de ce que ca veut dire ?
 
Ensuite, tout dépend du contexte, pour trouver des solutions autres, mais en as-tu seulement vraiment besoin ?


---------------
last.fm
Reply

Marsh Posté le 21-05-2009 à 19:10:57    

inline, le compilo en fait ce qu'il veut de tte façon :o
Ensuite, encore une optimsiation prématurée ...

 

Sinon, PFO ou simple foncteur suffise pour manipuler des fonctions comme des objets de 1er ordres.

Message cité 1 fois
Message édité par Joel F le 21-05-2009 à 19:11:20
Reply

Marsh Posté le 21-05-2009 à 20:00:02    

Joel F a écrit :

inline, le compilo en fait ce qu'il veut de tte façon :o
Ensuite, encore une optimsiation prématurée ...
Sinon, PFO ou simple foncteur suffise pour manipuler des fonctions comme des objets de 1er ordres.


 
Il ne parle pas de la directive "inline" mais de inliner un pointeur sur fonction. Et on ne sait pas à quel niveau est son développement, donc comment sais-tu que c'est prématuré ? Peut-être qu'il est entrain d'optimiser un point critique de son programme qu'il a déjà fini et profilé.
 
Sinon le foncteur est la solution.
 

Code :
  1. bool less( int a, int b ) { return a < b; }
  2. struct Less
  3. {
  4.     bool operator()( int a, int b ) { return a < b; }
  5. };
  6. int* p = ..., *q = ...;
  7. std::sort( p, q, less );
  8. std::sort( p, q, Less() );


 
Le deuxième sort sera surement mieux inliné que le premier, mais ça reste à la discrétion du compilateur. Au pire tappe dans la directive __forceinline ou un truc comme ça si tu es sûr de ce que tu fais et que ton compilo est têtu.

Reply

Marsh Posté le 21-05-2009 à 20:02:43    

jesus_christ a écrit :


Il ne parle pas de la directive "inline" mais de inliner un pointeur sur fonction. Et on ne sait pas à quel niveau est son développement, donc comment sais-tu que c'est prématuré ? Peut-être qu'il est entrain d'optimiser un point critique de son programme qu'il a déjà fini et profilé.


 
Tu peut parfaitement prendre un pointeur sur fonction inline, et selon des compilos, ca sera inliner si à la compil ou au link (avec des compilos LTO), le compilo retrouve ses petits.
Et dans ce cas, on retombe sur le probleme initial.
 
Quant à la prematuritée de la chose, c'ets mon 6e sens qui me le dit :o

Reply

Marsh Posté le 21-05-2009 à 20:12:37    

jesus_christ a écrit :


 
Il ne parle pas de la directive "inline" mais de inliner un pointeur sur fonction. Et on ne sait pas à quel niveau est son développement, donc comment sais-tu que c'est prématuré ? Peut-être qu'il est entrain d'optimiser un point critique de son programme qu'il a déjà fini et profilé.
 
Sinon le foncteur est la solution.
 

Code :
  1. bool less( int a, int b ) { return a < b; }
  2. struct Less
  3. {
  4.     bool operator()( int a, int b ) { return a < b; }
  5. };
  6. int* p = ..., *q = ...;
  7. std::sort( p, q, less );
  8. std::sort( p, q, Less() );


 
Le deuxième sort sera surement mieux inliné que le premier, mais ça reste à la discrétion du compilateur. Au pire tappe dans la directive __forceinline ou un truc comme ça si tu es sûr de ce que tu fais et que ton compilo est têtu.


 
voilà c'est précisement à ça que je voulais faire allusion


Message édité par Glock 17Pro le 21-05-2009 à 20:12:52
Reply

Marsh Posté le 21-05-2009 à 20:13:27    

ok pour inline, je sais qu'on peut prendre un pointeur, il est même garanti unique, mais il me semble qu'il se préoccupe d'inlinig et pas de fonction inline, ce qui n'est pas exactement la même chose.
 
Pour ton 6e sens, pourquoi pas, mais il faut pas tomber dans l'extrème à dire que c'est toujours trop tôt pour optimiser, comme je l'ai souvent vu. La veille de la livraison du soft, là c'est trop tard :p.
 
edit : et en plus j'aurai du mettre l'operator() const :D

Message cité 1 fois
Message édité par jesus_christ le 21-05-2009 à 20:15:42
Reply

Marsh Posté le 21-05-2009 à 20:19:07    

jesus_christ a écrit :


ok pour inline, je sais qu'on peut prendre un pointeur, il est même garanti unique, mais il me semble qu'il se préoccupe d'inlinig et pas de fonction inline, ce qui n'est pas exactement la même chose.


Ouais j'ia tendance à mettre les 2 dans le meme sac.
 

jesus_christ a écrit :


Pour ton 6e sens, pourquoi pas, mais il faut pas tomber dans l'extrème à dire que c'est toujours trop tôt pour optimiser, comme je l'ai souvent vu. La veille de la livraison du soft, là c'est trop tard :p.


Je connais le gus c'est tout :o
 

jesus_christ a écrit :


edit : et en plus j'aurai du mettre l'operator() const :D


3 pater noster et 4 install de boost 1.39 pr pénitence

Reply

Marsh Posté le 21-05-2009 à 20:21:24    

Joel F a écrit :


Ouais j'ia tendance à mettre les 2 dans le meme sac.


 :na:  
 

Joel F a écrit :


Je connais le gus c'est tout :o


Là j(adhère à ton argument  :jap:
 

Joel F a écrit :


3 pater noster et 4 install de boost 1.39 pr pénitence


Non pas bjam, pas bjaaaaam :cry:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed