vitte

Vitte — Benchmarks

Introduction

Les benchmarks sont essentiels pour mesurer la performance du langage Vitte, de son compilateur et de sa machine virtuelle.
Ils permettent de comparer différentes versions, de détecter des régressions, et d’optimiser la VM, le runtime et le compilateur.

Ce document présente :


Objectifs


Méthodologie

Environnement

Règles


Types de Benchmarks

1. Micro-benchmarks

Tests ciblés sur une seule fonctionnalité :

Exemple : addition de 10 millions d’entiers

let s = 0
for let i = 0; i < 10_000_000; i = i + 1 {
    s = s + i
}
print(s)

2. Benchmarks applicatifs

Tests sur programmes complets :

3. Benchmarks mémoire

4. Benchmarks système


Exemples de Commandes

Compiler et exécuter benchmark

vitte build benches/fib.vit -o fib.vitbc
vitte exec fib.vitbc

Lancer via hyperfine

hyperfine './target/release/vitte exec fib.vitbc'

Benchmarks automatisés (cargo)

cargo bench -p vitte-bench

Résultats (exemple fictif)

Benchmark Vitte VM 0.2 Python 3.12 Lua 5.4 Rust (native)
Fibonacci (30 récursif) 120 ms 250 ms 180 ms 0.4 ms
Boucle 10M additions 95 ms 200 ms 140 ms 0.3 ms
Quicksort 1M éléments 450 ms 900 ms 600 ms 5 ms
Multiplication matrices 620 ms 1100 ms 720 ms 8 ms

Observation : la VM Vitte est 2x plus rapide que Python et proche de Lua en micro-benchmarks, mais reste loin du code natif.


Visualisation

graph LR
    A[Fibonacci] -->|Vitte| B[120 ms]
    A -->|Python| C[250 ms]
    A -->|Lua| D[180 ms]
    A -->|Rust| E[0.4 ms]

Intégration CI/CD

Exemple GitHub Actions :

name: Benchmarks

on:
  workflow_dispatch:

jobs:
  benchmark:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo build --release -p vitte-cli
      - run: cargo bench -p vitte-bench

Les résultats sont archivés et comparés automatiquement.


Roadmap Benchmarks


Conclusion

Les benchmarks assurent la crédibilité technique du langage Vitte.
Ils guident les optimisations, mettent en lumière les points faibles et permettent d’aligner la VM avec les standards de performance modernes.
Avec une stratégie continue de benchmark et d’analyse, Vitte pourra rivaliser avec les langages dynamiques établis (Python, Lua) et tendre vers la performance du natif.