2009-03-09 7 views

Répondre

6

La micro-optimisation est presque toujours la mauvaise chose à faire. Ne commencez même pas à moins que le programme ne tourne trop lentement, et vous utilisez un profileur pour déterminer exactement où sont les parties lentes. Une fois que vous avez fait cela, mon conseil est de voir à améliorer la localisation du code et des données, car les échecs de cache sont presque certainement pire que les instructions sous-optimales. Cela étant fait, dans le cas plutôt étrange que vous pouvez utiliser une approche basée sur l'attribution ou la comparaison, essayez les deux et les chronométrer. La micro-optimisation est un jeu de nombres. Si les chiffres ne sont pas suffisants, découvrez pourquoi, puis vérifiez que ce que vous faites fonctionne réellement.

Alors, que voulez-vous dire par comparaison? Les sauts conditionnels causent des problèmes à n'importe quel processeur vaguement moderne, mais différents processeurs font des choses différentes, et il n'y a aucune garantie qu'une personne donnée ralentisse les choses. En outre, si l'une ou l'autre cause un échec de cache, c'est probablement le plus lent, quoi qu'il arrive. Enfin, les langages sont normalement compilés en code machine, et les choses simples comme les comparaisons et les affectations seront normalement compilées de la même manière. La grande différence sera le type de CPU.

+0

Je ne suis pas en train d'effectuer une micro-optimisation active, c'était juste une curiosité que j'avais après avoir vu des algorithmes de tri partiel puis comparer. – cmsjr

+0

OK, mais la question de savoir quelles opérations sont les plus rapides est devenue beaucoup plus compliquée depuis que j'ai commencé dans ce domaine. Les processeurs modernes sont vraiment compliqués et difficiles à prévoir. –

+0

alors que la réponse fournie est pratique, elle évite complètement la question: | – Darioush

9

Qu'en pensez-vous?

Au niveau le plus bas on fait deux lectures, l'autre fait une lecture et une écriture.

Mais pourquoi vous en soucieriez-vous vraiment? Vous ne devriez pas vous soucier de la performance à ce niveau. Optimiser pour Big-O

+3

Vous pourriez être intéressé de noter que le livre est en grande partie à propos de Big-O. Pourquoi devrais-je m'inquiéter? Parce que je ne sais pas. – cmsjr

+1

Je suis d'accord que c'est une optimisation ridicule, mais savoir comment chacun fonctionne n'est pas sans valeur. +1 de moi à l'OP et cette réponse. –

+0

Pyro, merci pour la perspicacité, sinon le ton. – cmsjr

Questions connexes