Quand et pourquoi utiliser l'attribut `#[inline]` en Rust ? Est-il vraiment nécessaire ?
Bonjour à tous ! Je suis débutant en Rust et j'essaie de comprendre les optimisations. J'ai lu qu'en C/C++, le mot-clé `inline` peut accélérer le code en remplaçant l'appel de fonction par son corps. En Rust, il existe aussi l'attribut `#[inline]`, mais je ne comprends pas complètement quand l'utiliser.
J'ai écrit une fonction simple pour additionner deux nombres :
```rust
fn add(a: i32, b: i32) -> i32 {
a + b
}
```
Et une autre qui l'appelle dans une boucle :
```rust
fn sum_squares(n: i32) -> i32 {
let mut sum = 0;
for i in 0..n {
sum += add(i, i);
}
sum
}
```
Si j'ajoute `#[inline(always)]` à `add`, cela aura-t-il un sens ? Le compilateur ne le devine-t-il pas tout seul ? Ou, au contraire, `#[inline(never)]` peut-il être utile pour réduire la taille du binaire ?
J'ai vu que dans la bibliothèque standard de Rust, certaines fonctions sont marquées `#[inline]`, mais pas toutes. Cela signifie qu'il faut le faire consciemment. Comment un développeur peut-il décider s'il doit ajouter `#[inline]` dans son code ? Existe-t-il des règles empiriques ou est-ce toujours une optimisation prématurée ?
No answers yet.
Connectez-vous pour laisser une réponse
Blogs