Pratiques de codage qui permettent au compilateur/optimiseur de faire un programme plus rapide

Il y a plusieurs années, les compilateurs C ne sont pas particulièrement intelligent. Comme une solution de contournement K&R inventé le registre de mots clés, de faire allusion à l'compilateur, que ce serait peut-être une bonne idée de garder cette variable dans un registre interne. Ils ont également fait le tertiaire opérateur pour aider à générer un code de meilleure qualité.

Comme le temps passait, les compilateurs mûri. Ils sont devenus très intelligent dans leur analyse des flux de leur permettre de prendre de meilleures décisions sur ce que les valeurs de tenir dans les registres que vous pourriez éventuellement faire. Le mot-clé de registre est devenu sans importance.

FORTRAN peut être plus rapide que C pour certains types d'opérations, en raison de alias questions. En théorie, prudent de codage, on peut contourner cette restriction pour activer l'optimiseur de générer plus rapidement le code.

Quelles pratiques de codage sont disponibles qui peuvent permettre au compilateur/optimiseur de générer plus rapidement le code?

  • L'identification de la plate-forme et le compilateur que vous utilisez, serait appréciée.
  • Pourquoi la technique semble fonctionner?
  • Exemple de code est encouragée.

Ici est un une question relative à la

[Modifier] Cette question n'est pas sur le processus global de profil, et de les optimiser. Supposons que le programme a été écrit correctement, compilé avec une optimisation complète, testés et mis en production. Il peut être construit dans votre code qui interdisent l'optimiseur de faire leur travail du mieux qu'il peut. Que pouvez-vous faire pour refactoriser le code qui permettra de supprimer les interdictions, et permettre à l'optimiseur de générer encore plus rapide code?

[Modifier] Décalage lien

  • Pourrait être un bon candidat pour le wiki de la communauté à mon humble avis car il n'y a pas de "unique" en réponse définitive à cette (intéressant) question...
  • Je la rate à chaque fois. Je vous remercie pour ça.
  • Par "meilleur", vous voulez dire simplement "plus vite" ou avez-vous d'autres critères d'excellence à l'esprit ?
  • Oui. Je vous remercie. Je vais affiner la question.
  • Je pensais c, mais il n'y a pas vraiment de raison de le limiter à cela. Je vais mettre à jour les tags
  • Je me demande à propos de cette histoire de l'inscrire mot-clé. Ils ont écrit un OS, peut-être que cela a du sens parce que la cible de leur système?
  • Il est assez difficile d'écrire un bon allocateur de registres, en particulier de façon portable, et l'allocation de registres est absolument essentielle à la performance et de la taille du code. register effectivement fait la performance sensible code plus portable par la lutte contre les pauvres, les compilateurs.
  • wiki de la communauté ne veut pas dire "pas de réponse définitive", ce n'est pas synonyme avec le caractère subjectif de la balise. Wiki de la communauté signifie que vous souhaitez abandonner votre poste à la communauté, afin que d'autres personnes peuvent le modifier. Ne vous sentez pas obligé de wiki à vos questions, si vous ne vous sentez pas comme lui.
  • J'ai fait un certain nombre de ces. La question est bonne. Je m'attends à un truc que je ne sais pas qui, qui va ajouter une flèche de mon carquois. Rep est un effet secondaire. Je suis d'accord avec Chris. Il n'y a pas de meilleure réponse. J'ai Choisi celui qui me semblait le plus surprenant. Les variables locales montrent également automatiquement dans un msvc fenêtre. C'est un plus.