PRODSuwerenna europejska platforma BaaSOtwórz Panel →

Inżynieria · 9 min odczytu

Zimny ​​start WebAssembly: co pokazują testy porównawcze

Affane Daylami · Fondateur · 19 czerwca 2026

Powrót do bloga

Żadne środowisko wykonawcze WebAssembly nie publikuje obecnie wartości zimnego startu mierzonych zgodnie ze udostępnionym, zdezagregowanym i odtwarzalnym protokołem sporządzonym przez stronę trzecią. Wasmtime, Wasmer i WasmEdge pokazują argumenty szybkiego rozruchu, ale rzadko tę samą definicję słowa „rozruch”. W tym artykule nie dodano jeszcze jednej cyfry do zbioru: wyjaśnia, co tak naprawdę mierzy zimny start, dlaczego opublikowane dane nie są porównywalne i na czym naprawdę stoi Aurabase, która działa przez cały czas w produkcji, nie opublikowawszy jeszcze własnego testu porównawczego.

Ten tekst w języku angielskim został wygenerowany automatycznie na podstawie francuskiego oryginału i nie był jeszcze recenzowany.
Ta strona została przetłumaczona automatycznie. Wersja angielska jest miarodajna.

Jest to logiczna kontynuacja naszej metodologii testów porównawczych , tym razem zastosowana do konkretnego wskaźnika. Aby uzyskać szczegółowe informacje na temat architektury naszych funkcji Edge, zobacz nasz podstawowy artykuł na tematarchitektury Rust Aurabaselub nasze porównanie Wasmtime vs Wasmer pod kątem różnic architektonicznych pomiędzy dwoma środowiskami wykonawczymi.

Najważniejsze

Zimny ​​start zestawu WebAssembly dodaje kilka faz (ładowanie, zatwierdzanie, kompilacja lub łączenie, tworzenie instancji, pierwsze wywołanie), a dwie liczby, które nie obejmują tych samych faz, nie są porównywalne, nawet jeśli wyświetlają tę samą jednostkę. Wasmer reklamuje Instaboot jako bezpośrednią reakcję marketingową na ten temat, ale jego osoby publiczne nie są tu uwzględnione bez zdezagregowanej metodologii. Aurabase uruchamia wasmtime w wersji 43 jako zależność produkcyjną dla swoich funkcji Edge (zweryfikowanych w aura-functions/Cargo.toml), ale do tej pory nie opublikował żadnych powtarzalnych testów porównawczych zimnego startu. W tym artykule nie podano żadnych danych dotyczących Aurabase: tematem jest metoda.

#
Obserwacja

Dlaczego zimny start WebAssembly po raz kolejny stał się kwestionowanym argumentem marketingowym

Zimny ​​start po raz kolejny stał się osią komercyjnego zróżnicowania środowisk wykonawczych WebAssembly, a nie tylko przedmiotem badań akademickich. Wasmer wyraźnie podkreśla tę zaletę, oferując funkcję o nazwie Instaboot, przedstawioną jako bezpośrednia odpowiedź na problem zimnego rozruchu.

Odruch ten dokładnie przypomina dynamikę udokumentowaną już w naszym artykule na temat metodologii testów porównawczych backendu: kilku konkurujących dostawców wyświetla dane dotyczące wydajności na swoich stronach produktów, nie zawsze określając protokół, który je wygenerował. Wartość zimnego startu bez metody nie dowodzi niczego więcej niż wartość opóźnienia bez metody.

Ta sama pułapka, co w przypadku każdego innego benchmarku

Liczba zimnego startu opublikowana na stronie marketingowej, bez materiału, bez nakładu pracy i bez jasnego określenia punktu początkowego i końcowego pomiaru, jest nie do odróżnienia od sloganu. Dotyczy to wszystkich środowisk wykonawczych cytowanych w tym artykule, w tym Aurabase w dniu publikacji figurki.

#
Definicja

Co właściwie mierzy zimny start i dlaczego definicja zmienia wszystko

Zimny ​​start nie jest pojedynczą operacją: jest to suma odrębnych faz, a dwóch dostawców niekoniecznie mierzy te same fazy pod tą samą nazwą.

ZaładunekOdzyskiwanie modułu .wasm: sieciowego, dysku lub już obecnego w pamięci
WalidacjaSprawdzanie struktury kodu bajtowego zestawu WebAssembly przed wykonaniem
Kompilacja lub linkowanieJIT w locie (Cranelift, LLVM) lub łączenie już prekompilowanego artefaktu (AOT)
InstancjaAlokacja pamięci liniowej, tabel i globali, wykonanie ewentualnej funkcji startu
Pierwsze połączenieSamo rozpatrzenie wniosku, czasem uwzględnione w ogłoszonej kwocie, czasem wyłączone

Liczba, która liczy tylko instancję modułu już załadowanego i już wkompilowanego w pamięć, będzie mechanicznie wyglądać lepiej niż figura obejmująca ładowanie i kompilację sieci. Żadne z nich nie jest samo w sobie fałszywe: problem pojawia się, gdy je porównamy, nie określając, który z nich został zmierzony.

#
Badania akademickie

Co pokazuje literatura akademicka i dlaczego jej liczby nie są ze sobą porównywalne

W pracach akademickich opublikowanych w ostatnich latach jako wydruk wstępny w arXiv zmierzono czas tworzenia instancji modułów WebAssembly w różnych środowiskach wykonawczych. Punktem wspólnym tych prac nie jest liczba zbieżna: jest to znacząca różnica w zależności od testowanego czasu działania, wielkości modułu i użytego sprzętu.

Dobrowolnie nie zamieszczamy w tym artykule żadnych dokładnych danych liczbowych zaczerpniętych z tych publikacji. Bez dokładnego sprawdzenia metodologii każdego artykułu w momencie jego pisania, ponowne opublikowanie pojedynczej liczby dokładnie odtworzyłoby problem dokumentowany w tym artykule: liczbę bez kontekstu, który pozwoliłby nam dowiedzieć się, co tak naprawdę mierzy.

Z drugiej strony to, czego uczy się ta wariancja, jest bezpośrednio przydatne: zimny start silnie zależy od kontekstu pomiaru, dokładnie tak, jak przypomina dyscyplina parzystości środowiska opisana w naszym artykule dotyczącym ogólnej metodologii (identyczny sprzęt, ten sam region, ten sam stan pamięci podręcznej dla wszystkich porównywanych systemów).

#
Krajobraz środowiska wykonawczego

Wasmtime, Wasmer, WasmEdge: różne priorytety kompilacji

Trzy niezależne środowiska wykonawcze WebAssembly, najczęściej cytowane w tej debacie, nie równoważą w ten sam sposób szybkości kompilacji i wydajności wykonania, co częściowo wyjaśnia, dlaczego ich dane dotyczące zimnego startu nie są porównywalne w poszczególnych terminach.

Czas WasZaplecze kompilacji Cranelift, z historycznie możliwą trasą prekompilacji przed wdrożeniemUżywany w produkcji przez Aurabase dla funkcji Edge
WasmerOd dawna dokumentował kilka wymiennych backendów, w tym backend zaprojektowany pod kątem szybkości kompilacji, a nie wydajności w czasie wykonywaniaMarkets Instaboot, ponowne uruchomienie poprzez migawkę już zainicjowanej instancji
WasmEdgePozycjonowanie publiczne skupiało się na szybkim starcie i posiadało własny argument konkurencyjnyAlternatywne środowisko uruchomieniowe jest również aktywne w tym obszarze marketingowym
Ta tabela służy do zilustrowania nieporównywalności, a nie do klasyfikacji czasów wykonania

Architektury te są publicznie dokumentowane w samych projektach. Na potrzeby tego artykułu nie weryfikowaliśmy ich ponownie wersja po wersji i nie stanowią one rankingu wydajności. Wyjaśniają jedynie, dlaczego trzy wartości zimnego rozruchu wyświetlane dla trzech różnych czasów pracy mogą być dokładne, a jednocześnie nieporównywalne ze sobą.

Aby zapoznać się ze wszystkimi szczegółami architektonicznymi pomiędzy dwoma środowiskami wykonawczymi, które są najczęściej przeciwstawiane w dyskusjach bezserwerowych, zobacz nasze dedykowane porównanie Wasmtime vs Wasmer.

#
Przekwalifikowanie

Co pokazuje Instaboot, a czego sama strona produktu nie dowodzi

Zgodnie z pozycją produktu, którą Wasmer komunikuje publicznie, Instaboot przywraca instancję już zainicjowaną przez mechanizm migawki, zamiast ponownie uruchamiać pełne uruchomienie przy każdym żądaniu. To prawdziwy wybór architektoniczny, zgodny z problemem, którego dotyczy.

Artykuł ten nie zawiera jednak powtórzenia parametrów wydajności wyświetlanych na stronie produktu Wasmer. Nie wiedząc, jaki sprzęt, przy jakim obciążeniu pracą i jaki protokół pomiarowy wygenerował tę liczbę, ponowna jej publikacja popełniłaby dokładnie błąd opisany powyżej: traktowanie liczby marketingowej jako niezależnego wyniku testu porównawczego.

Precedens uzasadniający tę ostrożność

Liczba taka jak „zimny start krótszy niż 1 ms” została już opublikowana publicznie, w tym w poprzedniej zawartości Aurabase, bez poparcia powtarzalnym punktem odniesienia. Jest teraz traktowany wewnętrznie jako nieobsługiwany. Ta sama zasada dotyczy wszelkich liczb wyświetlanych przez konkurencyjne środowisko wykonawcze, w tym Instaboot, o ile nie towarzyszy temu żadna zdezagregowana metodologia.

#
Sprawdzone w kodzie

Co Aurabase może dzisiaj powiedzieć o swoim własnym zimnym rozruchu, a czego nie może

Aurabase uruchamia funkcje Edge na platformie Wasmtime w fazie produkcyjnej, a nie w ramach projektu pilotażowego. Oto dokładnie, na co pozwala złożenie wniosku i gdzie kończy się to roszczenie.

3
CYTOWANE CZASY PRACY WASM
Wasmtime, Wasmer, WasmEdge
0
WYDANIE BENCHMARKOWEGO AURABASE DO ZIMNEGO STARTU
Brak powtarzalnych i datowanych pomiarów do chwili obecnej
43
WERSJA WASMTIME W PRODUKCJI
aura-functions/Cargo.toml, zależność od prod

Zależność jest deklarowana jako twarda, z aktywowanymi funkcjami async i cranelift w zależnościach produkcyjnych usługi, a nie w dev-dependency ani komentarzu:

Cargo.tomltoml
# Rzeczywisty ekstrakt z repozytorium
[dependencies]

# Środowisko wykonawcze WASM
wasmtime = { version = "43", features = ["async", "cranelift"] }

Czego ten plik nie mówi: w repozytorium dla tego środowiska wykonawczego nie istnieją obecnie żadne dane dotyczące zimnego startu zmierzone zgodnie z protokołem opisanym w naszej metodologii testów porównawczych . Do czasu opublikowania datowanego pomiaru ze zdezagregowanymi percentylami, sprzętem i obciążeniem pracą nie należy podawać żadnych wartości Aurabase jako zmierzonej cechy produktu. Ogólną architekturę platformy można znaleźć w naszym artykule filarowym Architektura Aurabase Rust. Konkretne porównanie pomiędzy WASM uruchamianym na zimno a kontenerem uruchamianym na zimno, niezależnie od poruszanej tutaj kwestii metodologicznej, można znaleźć w naszym dedykowanym artykule WASM vskontenery.

#
Czytanie siatki

Jak odczytać numer zimnego startu, zanim w to uwierzysz

Siedem pytań, które należy zadać każdemu, kto zaczyna grę na zimno, łącznie z naszymi w dniu premiery.

  1. Jakie fazy są uwzględnione? Ładowanie sieci, sprawdzanie poprawności, kompilacja, tworzenie instancji, pierwsze wywołanie: liczba, która liczy tylko część, nie jest porównywalna z liczbą, która liczy je wszystkie.
  2. Czy moduł był naprawdę „zimny”? Moduł znajdujący się już w pamięci lub pamięci podręcznej dysku nie testuje tego samego, co moduł ładowany po raz pierwszy.
  3. Kompilacja JIT czy prekompilowany artefakt (AOT)? Obie strategie mają strukturalnie różne koszty początkowe.
  4. Jednocyfrowa czy dystrybucja? Najlepszy wynik w dziesięciu nie ma takiej samej wartości jak p95 w tysiącu przebiegów.
  5. Określono sprzęt i region? Rysunek bez specyfikacji sprzętowej nie może być reprodukowany przez osoby trzecie.
  6. Porównanie przy równym obciążeniu i topologii? Porównanie własnego środowiska wykonawczego z usługą zarządzaną bez raportowania tego zniekształca odczyt.
  7. Data i wersja przetestowanego środowiska wykonawczego? Niedatowana liczba w projekcie, który szybko się rozwija, po kilku miesiącach nic nie znaczy.
#
Często zadawane pytania

Często zadawane pytania

Czym dokładnie jest zimny start WebAssembly?+
Jest to czas dzielący przyjście żądania dotyczącego jeszcze nieaktywnej funkcji od jego pierwszej skutecznej odpowiedzi. Tym razem dodaje się kilka odrębnych faz: ładowanie modułu, sprawdzanie poprawności kodu bajtowego, kompilacja lub łączenie, tworzenie instancji (pamięć liniowa, tabele, globale), a następnie przetwarzanie żądania. Dwie wartości zimnego rozruchu niekoniecznie mierzą te same fazy.
Czy wartość „Zimny ​​start zestawu WebAssembly krótszy niż 1 ms” jest prawdziwa?+
Liczba ta została opublikowana publicznie, łącznie z poprzednią zawartością Aurabase, bez poparcia powtarzalnym testem porównawczym obejmującym zdezagregowany sprzęt, obciążenie pracą i metodę. Jest teraz traktowany wewnętrznie jako nieobsługiwany. Ta sama uwaga dotyczy wszelkich numerów zimnego rozruchu wyświetlanych przez konkurencyjne środowisko wykonawcze bez opublikowanej metodologii.
Co to jest Instaboot, funkcja Wasmer?+
Zgodnie z pozycją produktu, którą Wasmer komunikuje publicznie, Instaboot przywraca instancję już zainicjowaną przez migawkę, zamiast ponownie uruchamiać pełne uruchomienie przy każdym żądaniu. Artykuł ten nie zawiera żadnych danych dotyczących wydajności wyświetlanych na stronie produktu Wasmer: bez oddzielnej metodologii i materiałów, ponowne opublikowanie tych danych spowodowałoby odtworzenie dokumentowanego przez nie problemu.
Czy Aurabase opublikował dane dotyczące zimnego startu dla swoich funkcji Edge?+
Nie. Aurabase obsługuje Wasmtime w wersji 43 (funkcje asynchroniczne i dźwigowe) jako zależność produkcyjną od funkcji aury, co jest weryfikowane bezpośrednio w serwisie Cargo.toml. Jednak w repozytorium nie istnieje obecnie żaden test porównawczy zimnego startu zgodny z powtarzalnym i przestarzałym protokołem dla tego środowiska wykonawczego.
Czy WebAssembly uruchamia się szybciej niż kontener?+
Architektonicznie moduł WebAssembly ma mniejszą powierzchnię startową niż kontener (brak jądra gościa, brak pełnego systemu plików do zamontowania), co sprawia, że ​​szybki zimny start jest prawdopodobny. Jednak rzeczywista różnica w dużym stopniu zależy od testowanego scenariusza. Nasz artykuł poświęcony porównaniu WASM z kontenerami bada ten punkt na konkretnych przypadkach.

Cytowane źródła zewnętrzne: publiczna dokumentacja produktu Wasmer (Instaboot), publiczna dokumentacja projektu Wasmtime (Bytecode Alliance), z którą konsultowano się w ramach przygotowań do tego artykułu, bez niezależnego podwójnego sprawdzania przedstawionych w nich danych dotyczących wydajności.

GOTOWY DO WDROŻENIA?

Twój backend w pięć minut.

Karta kredytowa nie jest wymagana · 500 MB za darmo · 50 000 MAU