J'ai commencé à lire Algorithms et je me demande toujours, quand il s'agit de primitives du même type, quelle est l'opération, l'affectation ou la comparaison la plus coûteuse? Cela varie-t-il beaucoup entre les langues?Quoi de plus cher, de comparaison ou de mission?
Répondre
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.
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
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
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. –
Pyro, merci pour la perspicacité, sinon le ton. – cmsjr
- 1. Quoi de plus efficace i ++ ou ++ i?
- 2. Optimisation de tableau: qu'est-ce qui est le plus cher?
- 3. Comparaison de type la plus rapide?
- 4. Native vs Protothreads, quoi de plus simple?
- 5. Quoi de mieux: DataSet ou DataReader?
- 6. Une comparaison de chaînes ou une recherche de hachage est-elle plus rapide en Perl?
- 7. Quoi de mieux, isset ou non?
- 8. Quoi de mieux: Chaîne globale ou singleton?
- 9. Quoi de mieux en matière de performance? tapez [,] ou tapez [] []?
- 10. Webservice ou WCF ou quoi
- 11. Isprefix est-il plus cher que de comparer deux chaînes en C#?
- 12. NSTimer est-il cher?
- 13. Virtual vs Interface poco, quoi de plus rapide?
- 14. C# performance: comparaison de type vs comparaison de chaînes
- 15. Quoi de plus est nécessaire pour Ajax que cette fonction
- 16. quoi de plus coûteux, 2 mises à jour, ou une suppression et un insert?
- 17. mission d'assemblage MIPS - problème avec un mot de charge
- 18. Comparaison de base de données
- 19. XMLGregorianCalendar comparaison de date
- 20. Jeux de données SPRY .. et la promesse de jeux de données déconnectés .. quoi de plus?
- 21. quoi appeler viewDidLoad ou loadview
- 22. comparaison/intersection des critères de comparaison
- 23. Comparaison de photos JQuery
- 24. Problème de comparaison Oracle
- 25. Comparaison de noms
- 26. Qu'est-ce que c'est? Méthode de modèle ou quoi?
- 27. Visionneuse d'image - commandes standard de l'interface graphique, ascendante ou quoi?
- 28. Problème de comparaison de temps avec Rails
- 29. Comparaison de schéma
- 30. Comparaison de deux objets.
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
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. –
alors que la réponse fournie est pratique, elle évite complètement la question: | – Darioush