Zig Academy · Leçon

Profilage et compromis de sécurité

Mesurez le coût et validez la correction.

Leçon 4 sur 413 étapes

Profilage et compromis de sécurité est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Zig Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Zig Academy comprend 4 leçons au total.

Mesurer avant d’optimiser

Le travail sur les performances commence par des mesures, pas par des suppositions. Vous avez besoin de chiffres réels avant de décider quelle structure de données est réellement trop lente. ⏱️

Le mode de compilation change tout

Le même code s’exécute très différemment selon le mode de compilation. Profilez en ReleaseFast pour mesurer la vitesse réelle, car Debug ajoute de nombreuses vérifications de sécurité.

zig build-exe ds.zig -O ReleaseFast

Les vérifications de sécurité prennent du temps

Debug et ReleaseSafe ajoutent des vérifications de dépassement et de limites. Elles détectent les erreurs, mais ajoutent un surcoût et influencent donc vos chiffres de benchmark.

Chronométrer simplement une section

Pour un chronométrage rapide, lisez une horloge monotone avant et après l’opération. std.time.Timer indique le nombre de nanosecondes écoulées.

var t = try std.time.Timer.start();
doWork();
const ns = t.read();

Attention au code mort

Un optimiseur peut supprimer un travail dont le résultat n'est pas utilisé. Forcez le compilateur à le conserver avec std.mem.doNotOptimizeAway.

std.mem.doNotOptimizeAway(result);

Le choix de l'allocateur est un compromis

Une arène permet des allocations rapides, mais libère tout en une seule fois. GeneralPurposeAllocator est plus sûr et détecte les fuites, mais il est plus lent.

Validez la correction avec des tests

La vitesse ne sert à rien si la structure est incorrecte. Associez à chaque mesure de performance un bloc de test qui vérifie le comportement de la structure de données.

test "stack pops in LIFO order" {
    // push then expect pops
}

Laissez l'allocateur de test traquer les fuites

Exécutez votre structure avec std.testing.allocator. Il fait échouer le test si une allocation n'est jamais libérée, ce qui permet de détecter rapidement les problèmes de mémoire.

const a = std.testing.allocator;

Utilisez des profileurs externes

Pour obtenir des informations détaillées au-delà des chronomètres, exécutez le binaire optimisé avec des outils comme perf ou Valgrind afin d'identifier les fonctions les plus sollicitées.

perf record ./ds && perf report

Maîtrisez votre notation grand O

Le profilage confirme les prédictions de la théorie. La recherche dans une table de hachage prend approximativement un temps constant, tandis que le parcours d'une liste chaînée est linéaire.

Livrez en toute sécurité, optimisez les points chauds

La bonne valeur par défaut est ReleaseSafe : elle est rapide tout en conservant les vérifications. Utilisez ReleaseFast uniquement pour les chemins critiques dont les performances ont été mesurées et confirmées.

Vérification rapide

Vous voulez obtenir des chiffres de mesure qui reflètent la vitesse réelle en production. Dans quel mode de compilation devez-vous mesurer les performances ?

Récapitulatif

Profilez en mode version finale, gardez le travail actif avec doNotOptimizeAway, validez avec des tests et l'allocateur de test, et trouvez le juste équilibre entre vitesse et sécurité. 🎯

Gratuit pour commencer

Apprends Zig avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « Profilage et compromis de sécurité » est-elle gratuite ?

Oui — le texte complet de « Profilage et compromis de sécurité » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Zig Academy, passe à CoddyKit PRO. Le cours Zig Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Profilage et compromis de sécurité » ?

Mesurez le coût et validez la correction. Tu pratiques Zig Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Zig Academy ?

Aucune expérience préalable n'est requise. Zig Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Profilage et compromis de sécurité » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Zig Academy ?

Oui. Chaque leçon Zig Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Une pile générique créée de zéro
  2. Une liste chaînée simple
  3. Utiliser HashMap et AutoHashMap
  4. Profilage et compromis de sécurité
← Retour à Zig Academy