Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2265 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Recherche un mot clef pour les fonctions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recherche un mot clef pour les fonctions

n°1812391
gee
Bon ben hon
Posté le 15-11-2008 à 00:25:17  profilanswer
 

Salut,
 
il y a quelques mois j'avais lu quelque chose a propros d'un certain mot clef que je n'arrive pas a retrouver.
 
Le principe etait que si une fonction depend uniquement de ses parametres (donc pas de rand, ou de dependances sur le temps ou sur une variable volatile), le compilateur pouvait mettre en memoire le resultat afin d'optimiser au prochain appel.
 
 
Genre:
 

Code :
  1. int foo (int a)
  2. {
  3.    return a + 2;
  4. }
  5. void main()
  6. {
  7.    foo(5);
  8.    foo(5);
  9. }


 
foo ici ne serait appeler qu'une fois et la 2e fois le resultat est deja en memoire.
Dans ma memoire il s'agissait de fonctions dites 'pure' mais en cherchant sur ce mot clef je ne trouve que 'virtual pure'...
 
 
Merci!


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
mood
Publicité
Posté le 15-11-2008 à 00:25:17  profilanswer
 

n°1812407
0x90
Posté le 15-11-2008 à 09:21:08  profilanswer
 

Sous gcc tu as __attribute__((pure)) et __attribute__((const)), mais sinon rien de portable.
Tu peut enrober chaque attribut dans une macro et faire varier la macro selon les compilos.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1812425
Joel F
Real men use unique_ptr
Posté le 15-11-2008 à 10:44:25  profilanswer
 

malheureseument à part ça,  ca va pas loin. Et le pure de gcc n'est pas le pure des langages fonctionnels.
 
Ensuite, le faite de "mémoiser" le résultat comme tu semble le désiré n'est pas une propriété fondamentale des fonctions pures.

n°1813672
gee
Bon ben hon
Posté le 19-11-2008 à 00:13:51  profilanswer
 

ok c'etait donc bien fonction pure :jap:
 
Est-ce que cela a vraiment un interet? Vaut-il mieux coder soit meme ce genre de chose avec une table de hashage?
 
Merci


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1813674
0x90
Posté le 19-11-2008 à 00:54:29  profilanswer
 

gee a écrit :

ok c'etait donc bien fonction pure :jap:
 
Est-ce que cela a vraiment un interet? Vaut-il mieux coder soit meme ce genre de chose avec une table de hashage?
 
Merci


 
Tu n'aura pas le même effet avec une table de hashage.
 
Avec le __attribute__((pure)), mettons que tu ait une fonction bidule qui soit pure, et que tu fasse :

Code :
  1. float a = 1.0f;
  2. float b = 2 * bidule(sin(a)) ;
  3. float c = 17 * bidule(sin(a));


GCC aura le droit de n'exécuter qu'une seule fois la portion bidule(sin(a)), parceque bidule et sin sont pures, donc l'expression complète est pure. le pure sert essentiellement à autoriser GCC à réécrire le code sous cette forme :

Code :
  1. float a = 1.0f;
  2. float tmp = bidule(sin(a));
  3. float b = 2 * tmp ;
  4. float c = 17 * tmp;


 
Si maintenant bidule n'est pas noté comme étant pure, mais utilise une table de hashage pour mémoizer un calcul lourd, sin(a) pourra n'être éxécuté qu'une seule fois, mais bidule( ) devra obligatoirement être exécutée 2x, GCC ne sait pas que c'est inutile. (et la seconde fois ça utilisera ta table de hashage, mais ce sera pas aussi bien que de pas avoir appelé du tout la fonction...).
 
Par contre, si ta fonction bidule est utilisé dans différents scopes impossible à prédire pour gcc (par exemple un truc du genre fibonacci récursif), même si bidule est pure, il ne sera pas capable de voir 2 appels avec les même paramètres entre différents scopes, alors que la table de hashage le permettra.
 


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1813676
gee
Bon ben hon
Posté le 19-11-2008 à 02:15:12  profilanswer
 

oki je vois.
 
Merci pour les informations. :jap:


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1813689
Joel F
Real men use unique_ptr
Posté le 19-11-2008 à 08:45:37  profilanswer
 

0x90 a écrit :


<des trucs>


N'y a t il pas glissement de sens par rapport au fonctions pures issus des langages fonctionnels ?
http://en.wikipedia.org/wiki/Pure_function


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Recherche un mot clef pour les fonctions

 

Sujets relatifs
recherche Script php de pari sportif .PHP fonctions FTP
Recherche tp Java card ESIL Luminy JL LanetRecherche de code dans le css
Script moteur de rechercheCréer un moteur de recherche
recherche personnes pour aider a la conception d'un siteRecherche personne pour NUTCH
[Design][Telethon] RechercheRecherche de codeur
Plus de sujets relatifs à : Recherche un mot clef pour les fonctions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR