Y at-il quelque part sur le web où je peux avoir une idée de ce que les différentes syntaxes de langage de programmation prennent en termes de cycles de processeur (Core i7 et Core 2)? À l'université j'ai appris le langage d'assemblage ARM et nous avons pu cartographier le nombre de cycles effectués pour faire un opérateur de soustraction etc. Je me demandais simplement s'il était possible de le faire avec un langage de niveau supérieur sur Core i7 ou Core 2?Nombre de cycles effectués pour C++ ou ANSI C?
Répondre
Non, c'est complètement dépendant du compilateur que vous utilisez, et quels paramètres d'optimisation que vous utilisez, etc.
Vous pouvez utilisez votre compilateur et vos paramètres favoris pour générer le code d'assemblage, et à partir du code d'assemblage, vous pouvez effectuer ce type de prédictions. Cependant, n'oubliez pas que sur les architectures modernes, des choses comme la latence de la mémoire et le changement de nom du registre ont des effets importants sur la vitesse, et ces effets ne sont pas évidents même à partir de l'inspection du code d'assemblage.
Et bonne chance avec l'architecture 64 bits, x86 est de petites frites par rapport à ce cauchemar. –
La plupart du temps, le code lent est dû à des instructions CPU lentes (par exemple des divisions entières ou des opérations à virgule flottante transcendantes), des échecs de cache et des erreurs de branchement. Vous pouvez en déduire toutes ces données et obtenir l'idée générale de la performance en regardant le code. – user434507
@user: Oui, mais vous n'obtiendrez rien comme un "feature x == y cycles" –
En général, dans les langages de niveau supérieur, les instructions individuelles ne sont pas mappées correctement sur des séquences spécifiques d'instructions de code machine. Le compilateur optimisera typiquement les choses, ce qui impliquera diverses transformations, arrangements, et même éliminations, d'instructions. Par conséquent, il n'est généralement pas utile de citer des métriques comme "une expression for
prend 20 cycles".
Vous devez mapper les instructions de niveau supérieur dans les instructions d'assemblage manuellement ou consulter la liste d'assemblage. Et puis regardez ici
http://gmplib.org/~tege/x86-timing.pdf
ou ici
- 1. Mesure du nombre de cycles
- 2. Extension graphique ANSI C
- 3. ansi-c problème fscanf
- 4. Types questions en ANSI C
- 5. Ansi C & C++ source e-book gratuit pour le téléchargement
- 6. Parse Apache Connexion Ansi C
- 7. Conversion d'un UNICODE_STRING en ANSI ou vice versa en C
- 8. Connexion Mysql dans Ansi c
- 9. C ANSI C ou ISO C spécifie-t-il ce que -5% 10 devrait être?
- 10. ANSI C: Création d'un tableau de travaux
- 11. Comment tuer un pthread dans ANSI C
- 12. ANSI C Bluetooth API et didacticiel Linux
- 13. Données entre exécutables (ANSI C, MFC 4.1)
- 14. Visual Studio 2008 Restreindre à ANSI C
- 15. Structs sur la pile (ANSI C)
- 16. En-tête C standard pour les séquences d'échappement ANSI VT100
- 17. Quel est le meilleur code pour convertir les paramètres BSTR en ANSI en C/C++?
- 18. Implémentation de modèle en usine utilisant ANSI C
- 19. ANSI C: Affectation de tableaux et de pointeurs aux tableaux
- 20. SVNKit comme wrapper pour C ou C++
- 21. Mise en œuvre de la norme ANSI C dans Eclipse
- 22. Affectation de données via une fonction (ANSI C)
- 23. Quelle version de la norme ANSI C est-ce que Turbo C 3.0 suit?
- 24. Comment libérer la mémoire dans l'arborescence de préfixes? (ANSI C)
- 25. Comment convertir ANSI-C de unsigned int * en char *?
- 26. Encodage de caractères, UTF ou ANSI?
- 27. déclarant correctement la fonction principale() dans la norme ANSI C
- 28. Comptage des références avec cycles dans le pointeur intelligent C++
- 29. C++ format nombre hexadécimal
- 30. C++ Nombre parfait. Besoin d'aide pour réviser
Une manière plus précise serait de lire l'assembly généré par votre compilateur. Ensuite, il vous reste le problème de prédire la performance d'un morceau de code sur un processeur moderne en panne. –
Pourquoi voudriez-vous faire cela? Nous pouvons peut-être vous aider à résoudre un problème que vous tentez de résoudre. –
Existe-t-il un moyen pour VS2010 de voir l'assemblage produit? – Tom