Zig Academy · Lekcja

Profilowanie i kompromisy bezpieczeństwa

Mierz koszt i sprawdzaj poprawność.

Lekcja 4 z 413 kroki

Profilowanie i kompromisy bezpieczeństwa to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Zig Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Zig Academy zawiera 4 lekcji w sumie.

Najpierw mierz, potem optymalizuj

Praca nad wydajnością zaczyna się od pomiarów, a nie od zgadywania. Potrzebujesz rzeczywistych liczb, zanim zdecydujesz, która struktura danych jest rzeczywiście zbyt wolna. ⏱️

Tryb kompilacji zmienia wszystko

Ten sam kod działa zupełnie inaczej w zależności od trybu kompilacji. Aby uzyskać rzeczywistą szybkość, profiluj w trybie ReleaseFast, ponieważ Debug dodaje wiele kontroli bezpieczeństwa.

zig build-exe ds.zig -O ReleaseFast

Kontrole bezpieczeństwa kosztują czas

Tryby Debug i ReleaseSafe dodają kontrole przepełnienia i zakresu. Wykrywają one błędy, ale zwiększają narzut, więc wpływają na wyniki benchmarku.

Prosto zmierz czas sekcji

Aby szybko zmierzyć czas, odczytaj wskazanie monotonicznego zegara przed wykonaniem operacji i po nim. std.time.Timer podaje czas, który upłynął, w nanosekundach.

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

Uważaj na martwy kod

Optymalizator może usunąć operacje, których wynik nie jest używany. Wymuś zachowanie ich przez kompilator za pomocą std.mem.doNotOptimizeAway.

std.mem.doNotOptimizeAway(result);

Wybór alokatora to kompromis

arena umożliwia szybką alokację, ale zwalnia całość naraz. GeneralPurposeAllocator jest bezpieczniejszy i wykrywa wycieki, lecz działa wolniej.

Sprawdzaj poprawność za pomocą testów

Szybkość nic nie znaczy, jeśli struktura jest niepoprawna. Połącz każdy benchmark z blokiem test, który sprawdza poprawne działanie struktury danych.

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

Pozwól alokatorowi testowemu wykrywać wycieki

Uruchom strukturę za pomocą std.testing.allocator. Test zakończy się niepowodzeniem, jeśli jakakolwiek alokacja nie zostanie zwolniona, dzięki czemu błędy pamięci zostaną wykryte wcześnie.

const a = std.testing.allocator;

Sięgaj po zewnętrzne profilery

Aby uzyskać szczegółowe informacje wykraczające poza pomiary czasu, uruchom zoptymalizowany plik binarny za pomocą narzędzi takich jak perf lub Valgrind i sprawdź, które funkcje są najczęściej wykonywane.

perf record ./ds && perf report

Poznaj swoją notację Big-O

Profilowanie potwierdza przewidywania teorii. Wyszukiwanie w tablicy haszującej zajmuje w przybliżeniu stały czas, natomiast przeglądanie listy jednokierunkowej ma złożoność liniową.

Wydawaj bezpiecznie, dostrajaj wąskie gardła

Dobrym ustawieniem domyślnym jest ReleaseSafe: działa szybko, a jednocześnie zachowuje kontrole. Tryb ReleaseFast stosuj tylko dla potwierdzonych i zmierzonych miejsc krytycznych pod względem wydajności.

Szybkie sprawdzenie

Chcesz uzyskać wyniki benchmarku odzwierciedlające rzeczywistą szybkość produkcyjną. W którym trybie kompilacji należy wykonać pomiar?

Podsumowanie

Profiluj w trybie wydania, zachowuj wykonywane operacje za pomocą doNotOptimizeAway, sprawdzaj poprawność testami i alokatorem testowym oraz równoważ szybkość z bezpieczeństwem. 🎯

Bezpłatny start

Ucz się Zig dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Profilowanie i kompromisy bezpieczeństwa” jest bezpłatna?

Tak — pełny tekst „Profilowanie i kompromisy bezpieczeństwa” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Profilowanie i kompromisy bezpieczeństwa”?

Mierz koszt i sprawdzaj poprawność. Ćwiczysz Zig Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Zig Academy?

Nie wymagamy żadnego doświadczenia. Zig Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Profilowanie i kompromisy bezpieczeństwa”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Zig Academy?

Tak. Każda lekcja Zig Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Generyczny stos od podstaw
  2. Jednokierunkowa lista wiązana
  3. Korzystanie z HashMap i AutoHashMap
  4. Profilowanie i kompromisy bezpieczeństwa
← Powrót do Zig Academy