2009-05-06 6 views
0
  1. Comment effectuez-vous exactement le «regroupement»?
  2. Comment le théorème du point fixe de Kleene aide-t-il à l'optimisation?
  3. Comment éliminer les variables libres des définitions de fonctions locales dans les programmes écrits dans des langages non fonctionnels?

EDIT: Ce ne sont pas mes questions de devoirs. Je suis dans mes vacances d'été.Confusion à propos de trois techniques d'optimisation

EDIT2: Eh bien, je commence juste à étudier les optimisations du compilateur et je n'ai pas un code particulier que je veux optimiser. Pourriez-vous juste me dire quelles sont les méthodes générales que vous pouvez utiliser les trois techniques d'optimisation ci-dessus ou au moins me dire les ressources qui les expliquent correctement?

+3

De quoi êtes-vous particulièrement confus? –

+0

Eh bien, comment puis-je utiliser des théorèmes à virgule fixe pour optimiser le code? – unj2

+0

Essayez d'être plus précis dans vos questions. Vous pourriez écrire une thèse de doctorat sur vos trois. Essayez quelque chose comme "comment puis-je utiliser le point fixe de Kleene pour optimiser ce code ... (code)" – nash

Répondre

0

Voici ce que j'ai trouvé sur le web, si quelqu'un a accès à plus d'informations, veuillez répondre.

William Clinger enseigne deux des techniques ci-dessus et regarde dans les plus intéressants dans sa classe: http://www.ccis.neu.edu/home/will/csg262_fall2004/syllabus.html

Ces gars utilisent l'algèbre Kleene pour l'analyse des flux de données. Je pense que nous pouvons l'utiliser dans l'optimisation des compilateurs: http://ieeexplore.ieee.org/Xplore/login.jsp?url=http://ieeexplore.ieee.org/iel5/4159639/4159640/04159673.pdf%3Fisnumber%3D4159640%26prod%3DCNF%26arnumber%3D4159673%26arSt%3D201%26ared%3D210%26arAuthor%3DFernandes%252C%2BT.&authDecision=-203

Malheureusement, le document ci-dessus nécessite une connexion.

Ce que j'ai trouvé à propos commoning (mais cela n'a pas aidé beaucoup): http://www.patentsurf.net/7,516,448

2
  1. commoning se fait en hachant bottom-up.
  2. Le théorème de Kleene permet au compilateur d'implémenter une solution itérative aux équations de récursion qui fournissent des faits sur le programme. Un exemple simple de fait est qu'à un certain point, la variable i est toujours égale à 0.
  3. Si vous avez une fonction locale avec des variables libres qui sont let-bound ou lambda-bound dans une fonction englobante, alors par définition vous avez affaire à un langage qui a des fonctions de première classe. Les variables libres sont généralement traitées par conversion de fermeture, bien que certains compilateurs utilisent lambda-lifting.

termes de recherche recommandées:

  • hachant Bottom-up
  • d'élimination commune-subexpression
  • analyse itératives de flux de données
  • optimisation du flux de données en toute simplicité
  • passage de continuation, fermeture passage style
  • Conversion de fermeture
  • Soulever lambda
0

Bonne réponse de Norman.(J'espère juste que votre professeur ne confond pas les optimisations qu'un compilateur pourrait faire avec les optimisations que le programmeur peut faire.Ce dernier est moins un sujet technique, donc il y a moins à dire à ce sujet, mais dans une application réelle, il est des ordres de grandeur plus significatifs.)