2009-07-08 7 views
3

Comment déclarer les types de paramètres afin de contourner la vérification de type?Comment utiliser les déclarations (type, inline, optimize) dans Scheme?

Comment optimiser la vitesse pour indiquer au compilateur d'exécuter la fonction aussi rapidement que possible (optimiser la vitesse (sécurité 0))?

Comment créer une fonction inline dans Scheme? Comment utiliser une représentation non encadrée d'un objet de données?

Comment utiliser une représentation sans boîte d'un objet de données?

Et enfin, sont-ils importants ou nécessaires? Puis-je dépendre de mon compilateur pour faire ces optimisations?

merci, kunjaan.

Répondre

5
  1. Vous ne pouvez en faire aucune de manière portable.
  2. Vous pouvez obtenir une "sorte de" inline en utilisant des macros, mais c'est presque toujours d'essayer de le faire. Les personnes qui écrivent des compilateurs Scheme (ou n'importe quel autre langage) sont généralement beaucoup mieux que vous pour décider quand il est préférable d'intégrer une fonction.
  3. Vous ne pouvez pas faire de valeurs sans boîte; certains compilateurs Scheme le feront en tant qu'optimisation, mais pas de toute façon qui est visible (parce que est une optimisation - il devrait donc préserver la sémantique). En ce qui concerne votre dernière question, une réponse est très subjective. Certaines personnes ne peuvent pas dormir la nuit sans savoir exactement combien de cycles d'UC certaines utilisations de la fonction. Certaines personnes s'en fichent et font confiance au compilateur pour optimiser raisonnablement les choses. Au moins aux étapes où vous êtes plus un étudiant de la langue et moins d'un implémenteur, il est préférable de s'en tenir à ce dernier groupe.
2

Si vous souhaitez aider le compilateur, envisagez de réduire les définitions de niveau supérieur lorsque cela est possible. Si le compilateur voit une fonction au niveau supérieur, il est très difficile de deviner comment cette fonction pourrait être utilisée ou modifiée par le programme. Si une fonction est définie dans le cadre d'une fonction qui l'utilise, le travail du compilateur devient beaucoup plus simple.

Il y a une section à ce sujet dans le manuel schéma Chez: http://www.scheme.com/csug7/use.html#./use:h4

Apparemment Chez est l'un des plus rapides implémentations Scheme il y a. S'il a besoin de ce genre de «guide» pour faire de bonnes optimisations, je soupçonne que d'autres implémentations ne peuvent pas s'en passer non plus (ou tout simplement les ignorer toutes ensemble).