The Cost of Indirection in Rust
L’article soutient que, dans le code asynchrone en Rust, l’inquiétude autour d’un appel de fonction supplémentaire est souvent infondée. Il montre que l’extraction d’un bloc en une fonction asynchrone peut, en pratique, ne pas ajouter de coût réel, car le compilateur peut fusionner les états du futur et éliminer l’indirection. Pour évaluer les coûts, il préconise de mesurer avec des benchmarks réels et des outils de profiling, car les microbenchmarks peuvent être trompeurs. Il identifie des cas où l’indirection compte réellement, comme les boucles serrées, la dispatch dynamique et les chemins critiques de performance. Enfin, il rappelle que la lisibilité et la maintenabilité priment: privilégier des abstractions claires et fiez-vous au compilateur, en mesurant les gains sur des données réelles et en nommant bien les fonctions.