Skip to content

Latest commit

 

History

History
90 lines (66 loc) · 2.54 KB

File metadata and controls

90 lines (66 loc) · 2.54 KB

Zero-Cost Abstractions - Gratuit! 🎁

Learning Objectives

  • Comprendre les zero-cost abstractions (c'est magique!)
  • Voir comment Rust les optimise
  • Utiliser les abstractions efficacement
  • Vérifier les optimisations

Core Explanation

For Absolute Beginners - C'est Comme un Cadeau Gratuit! 🎁

Imaginez un cadeau gratuit 🎁:

  • Zero-cost = Vous avez la beauté (abstraction) SANS le coût (performance)
  • Le compilateur optimise automatiquement
  • C'est gratuit et rapide!

C'est exactement comme les zero-cost abstractions fonctionnent! C'est super magique!

Schéma Visuel - Zero-Cost

┌─────────────────────────────────────────┐
│  🎁 ZERO-COST = CADEAU GRATUIT 🎁     │
├─────────────────────────────────────────┤
│                                         │
│  Code avec abstractions                 │
│  (beau, lisible)                        │
│         │                                │
│         ▼ Compilateur optimise          │
│  Code optimisé                          │
│  (rapide comme code manuel!)            │
│                                         │
│  Beauté + Performance! ✅              │
│                                         │
└─────────────────────────────────────────┘

Mnémonique: "Cadeau" - Les zero-cost abstractions sont comme un cadeau gratuit: vous avez la beauté (abstraction) sans le coût (performance)!

Concept

Les zero-cost abstractions sont des abstractions qui n'ont pas de coût en performance à l'exécution. Le compilateur les optimise pour être aussi rapides que le code manuel.

Exemples

Example 1: Iterators

// Iterator (abstraction)
let sum: i32 = vec![1, 2, 3, 4, 5]
    .iter()
    .map(|x| x * 2)
    .sum();

// Équivaut à (après optimisation):
let mut sum = 0;
for x in vec![1, 2, 3, 4, 5] {
    sum += x * 2;
}

Example 2: Option

// Option (abstraction)
let value = Some(5);
match value {
    Some(x) => println!("{}", x),
    None => {},
}

// Optimisé comme un simple if

Vérification

# Voir le code généré
cargo rustc -- --emit asm

# Comparer les performances
cargo bench

Official Resources