Une fonction statique dans C peut-elle être potentiellement plus rapide car l'optimiseur du compilateur voit tous les sites d'appel et optimise donc l'épilogue et le prologue de la fonction appelée?fonction statique plus rapide?
Répondre
En théorie, il peut. Pourtant, en même temps, certains compilateurs modernes peuvent effectuer ce que l'on appelle des «optimisations globales», qui sont basées sur l'analyse des relations entre le code à travers les unités de traduction. Cela peut inclure l'analyse de tous les sites d'appel pour une fonction donnée dans l'ensemble du programme (par opposition à une seule unité de traduction) et potentiellement étendre ces optimisations à des fonctions non statiques ainsi.
Il peut rendre le compilateur plus disposé à intégrer, oui. Mais, comme toujours, cela dépend du compilateur. Vous devez tester et vérifier l'assemblage de sortie pour être sûr.
Si votre fonction est appelée à partir de la même unité de traduction (static
), les compilateurs peuvent déjà facilement intégrer ces appels, que la fonction soit déclarée static
ou non.
Certains compilateurs de qualité effectuent également une optimisation de l'ensemble du programme, de sorte que l'incrustation et d'autres optimisations peuvent se produire même pour les appels à des fonctions dans une unité de traduction différente.
Oui! Pouvez-vous dire 'LLVM'? Ce qui semble absolu dans la pratique de la programmation s'avère souvent éphémère. –
@Tim: +1 <3 LLVM (et autres systèmes de compilation dynamique). Mais sérieusement, même les éditions haut de gamme de Visual C++ feront des optimisations de programme complet pour vous. –
Et GCC pauvre ne peut pas le faire encore :(Mais j'ai entendu le travail est en cours pour l'ajouter. –
- 1. Fonction DirectoryExists plus rapide?
- 2. rand() fonction php mysql plus rapide
- 3. Une alternative plus rapide à la fonction .html de jQuery?
- 4. Implémentation la plus rapide de la fonction frac en C#
- 5. strpos séquentielle() plus rapide qu'une fonction avec un preg_match?
- 6. alternative plus rapide à memcpy?
- 7. Image chargement plus rapide
- 8. plus rapide pour cloner
- 9. plus rapide que in_array?
- 10. plus rapide HTML Downloader
- 11. Fonction logistique rapide
- 12. C++ appelant une fonction statique d'une autre fonction statique
- 13. texte Javascript plus rapide remplacer
- 14. Fonction statique Aide C++
- 15. Un remplacement plus intelligent/plus rapide/plus rapide pour cette ligne de code?
- 16. Le moyen le plus rapide de dessiner une image statique en Java
- 17. Quelle est la fonction la plus rapide et la plus efficace?
- 18. algorithme etag le plus rapide
- 19. Quand un python plus rapide?
- 20. Implémentation plus rapide de Math.round?
- 21. Avantage d'utiliser une fonction membre statique au lieu d'une fonction membre non statique équivalente?
- 22. Bouclage en fonction ou appel multiple de la fonction, qu'est-ce qui est le plus rapide?
- 23. Pourquoi la fonction fwrite libc est plus rapide que la fonction d'écriture syscall?
- 24. [fonction php] rapide -> [fonction javascript] question
- 25. Implémentation CompareText plus rapide pour D2009
- 26. Comment optimiser requête SQL rendre plus rapide
- 27. Appel dynamique d'une fonction statique?
- 28. ActionScript encapsulant une fonction statique
- 29. export DLL d'une fonction statique
- 30. Fonction ping rapide pour PowerShell
Cette question est en fait une question d'évaluation de points légitime, et en faire un wiki communautaire découragera les réponses légitimes. :-) (c'est-à-dire, je pense que les gens ne préfèrent pas répondre à de "vraies" questions si cela ne les aide pas à obtenir des rep.) –
@Chris: J'aimerais bien savoir cela. Puis-je le changer maintenant? – Mike
Non, une fois qu'un poste devient CW il n'y a aucun moyen de le dés-un, par conception. Voir: http://meta.stackexchange.com/questions/11740/what-are-community-wiki-posts-on-stack-overflow –