PRODSoeverein Europees BaaS-platformOpen Dashboard →

Techniek · 9 min gelezen

WebAssembly koude start: wat benchmarks laten zien

Affane Daylami · Fondateur · 19 juni 2026

Terug naar blog

Geen enkele WebAssembly-runtime publiceert momenteel een koudestartcijfer gemeten volgens een gedeeld, opgesplitst en reproduceerbaar protocol door een derde partij. Wasmtime, Wasmer en WasmEdge tonen elk quickboot-argumenten, maar zelden dezelfde definitie van het woord "boot". Dit artikel voegt geen cijfer meer toe aan de stapel: het legt uit wat een koude start werkelijk meet, waarom de gepubliceerde cijfers niet met elkaar vergelijken, en waar Aurabase werkelijk staat, dat in productie is zonder dat het zijn eigen benchmark heeft gepubliceerd.

Deze Engelse tekst is automatisch gegenereerd op basis van het Franse origineel en is nog niet beoordeeld.
Deze pagina is automatisch vertaald. De Engelse versie is gezaghebbend.

Dit is de logische voortzetting van onze benchmarkmethodologie, deze keer toegepast op een specifieke statistiek. Voor details over de architectuur van onze Edge-functies, zie ons pijlerartikel over deRust-architectuur van Aurabase, of onze vergelijking Wasmtime versus Wasmer voor de architecturale verschillen tussen de twee runtimes.

De essentie

Een koude start van WebAssembly voegt verschillende fasen toe (laden, vastleggen, compileren of koppelen, instantiëren, eerste aanroep) en twee cijfers die niet dezelfde fasen bevatten, zijn niet vergelijkbaar, zelfs als ze dezelfde eenheid weergeven. Wasmer brengt Instaboot op de markt als een direct marketingreactie op het onderwerp, maar de publieke figuren zijn hier niet opgenomen zonder opgesplitste methodologie. Aurabase draait wasmtime versie 43 als productieafhankelijkheid voor zijn Edge-functies (geverifieerd in aura-functions/Cargo.toml), maar heeft tot nu toe geen reproduceerbare koudestartbenchmarks gepubliceerd. In dit artikel worden geen cijfers van Aurabase gegeven: het gaat om de methode.

#
Observatie

Waarom de koude start van WebAssembly opnieuw een omstreden marketingargument is geworden

De koude start is opnieuw een as van commerciële differentiatie tussen WebAssembly-runtimes geworden, en niet alleen een onderwerp van academisch onderzoek. Wasmer maakt hier een expliciet verkoopargument van met een functie genaamd Instaboot, gepresenteerd als een direct antwoord op het koude startprobleem.

Deze reflex doet precies denken aan de dynamiek die al is gedocumenteerd in ons artikel over de backend benchmark-methodologie: verschillende concurrerende leveranciers geven prestatiecijfers weer op hun eigen productpagina, zonder altijd het protocol te specificeren dat deze heeft geproduceerd. Een koudestartcijfer zonder methode bewijst niets meer dan een latentiecijfer zonder methode.

Dezelfde valkuil als voor elke andere benchmark

Een koude startcijfer gepubliceerd op een marketingpagina, zonder materiaal, zonder werkdruk en zonder duidelijke definitie van het start- en eindpunt van de meting, is niet te onderscheiden van een slogan. Dit geldt voor alle looptijden die in dit artikel worden genoemd, inclusief Aurabase op de dag dat een cijfer wordt vrijgegeven.

#
Definitie

Wat een koude start eigenlijk meet, en waarom de definitie alles verandert

Een koude start is geen enkele handeling: het is een optelsom van verschillende fasen, en niet noodzakelijkerwijs meten twee leveranciers dezelfde fasen onder dezelfde naam.

LadenHerstel van de .wasm-module: netwerk, schijf of al aanwezig in het geheugen
ValidatieControle van de WebAssembly-bytecodestructuur vóór uitvoering
Compileren of koppelenJIT on the fly (Cranelift, LLVM) of het koppelen van een reeds vooraf gecompileerd artefact (AOT)
InstantiatieToewijzing van lineair geheugen, tabellen en globalen, uitvoering van een mogelijke startfunctie
Eerste oproepVerwerking van de aanvraag zelf, soms inbegrepen in het aangekondigde cijfer, soms uitgesloten

Een cijfer dat alleen de instantiatie meet van een module die al is geladen en al in het geheugen is gecompileerd, zal er mechanisch beter uitzien dan een cijfer dat het laden en compileren van het netwerk omvat. Geen van beide is op zichzelf onwaar: het probleem doet zich voor als we ze vergelijken zonder te specificeren welke van de twee is gemeten.

#
Academisch onderzoek

Wat de wetenschappelijke literatuur laat zien, en waarom de cijfers niet met elkaar vergelijkbaar zijn

Academisch werk dat de afgelopen jaren als preprint op arXiv is gepubliceerd, heeft de instantiatietijd van WebAssembly-modules op verschillende runtimes gemeten. Het gemeenschappelijke punt tussen deze werken is geen convergent cijfer: het is een significant verschil, afhankelijk van de geteste runtime, de grootte van de module en de gebruikte hardware.

In dit artikel nemen wij vrijwillig geen exacte cijfers uit deze publicaties op. Zonder de methodologie van elk artikel op het moment van schrijven grondig te hebben gecontroleerd, zou het opnieuw publiceren van een geïsoleerd getal precies het probleem reproduceren dat dit artikel beschrijft: een getal zonder de context die ons in staat zou stellen te weten wat het werkelijk meet.

Wat deze variantie aan de andere kant leert, is direct nuttig: een koude start hangt sterk af van de meetcontext, precies zoals herinnerd door de discipline van omgevingspariteit, beschreven in ons artikel over algemene methodologie (identieke hardware, dezelfde regio, dezelfde cachestatus voor alle vergeleken systemen).

#
Runtime-landschap

Wasmtime, Wasmer, WasmEdge: verschillende compilatieprioriteiten

De drie op zichzelf staande WebAssembly-runtimes die het meest in dit debat worden genoemd, houden de compilatiesnelheid en uitvoeringsprestaties niet op dezelfde manier in evenwicht, wat gedeeltelijk verklaart waarom hun koudestartcijfers niet van term tot term vergelijkbaar zijn.

WastijdCranelift-compilatiebackend, met historisch gezien een mogelijke precompilatieroute vóór implementatieGebruikt in productie door Aurabase voor Edge-functies
WasmerHeeft al lang verschillende verwisselbare backends gedocumenteerd, waaronder een backend die is ontworpen voor compilatiesnelheid in plaats van runtime-prestatiesMarkets Instaboot, een herstart door momentopname van een reeds geïnitialiseerd exemplaar
WasmEdgeDe publieke positionering was gericht op een snelle start, met een eigen concurrentieargumentAlternatieve runtime ook actief op dit marketinggebied
Deze tabel wordt gebruikt om de onvergelijkbaarheid te illustreren, niet om de looptijden te classificeren

Deze architecturen worden publiekelijk gedocumenteerd door de projecten zelf. We hebben ze voor dit artikel niet versie voor versie opnieuw geverifieerd en ze vormen geen prestatieranglijst. Ze verklaren alleen waarom drie koudestartcijfers, weergegeven door drie verschillende looptijden, allemaal nauwkeurig kunnen zijn en toch niet met elkaar vergelijkbaar zijn.

Voor de volledige architectonische details tussen de twee runtimes die het vaakst tegengesteld zijn in serverloze discussies, zie onze speciale vergelijking Wasmtime vs Wasmer.

#
Herkwalificatie

Wat Instaboot laat zien, en wat de productpagina alleen bewijst, bewijst niet

Volgens de productpositionering die Wasmer publiekelijk communiceert, herstelt Instaboot een exemplaar dat al is geïnitialiseerd door een snapshot-mechanisme, in plaats van bij elk verzoek een volledig opstarten opnieuw te starten. Het is een echte architecturale keuze die consistent is met het probleem dat ermee wordt beoogd.

Wat dit artikel echter niet doet, is een prestatiecijfer herhalen dat op de Wasmer-productpagina wordt weergegeven. Zonder te weten welke hardware, welke werklast en welk meetprotocol dit cijfer hebben opgeleverd, zou het opnieuw publiceren ervan precies de hierboven gedocumenteerde fout maken: een marketingnummer behandelen als een onafhankelijk benchmarkresultaat.

Het precedent dat deze voorzichtigheid rechtvaardigt

Een cijfer als “koude start minder dan 1 ms” heeft al publiekelijk de ronde gedaan, ook in eerdere Aurabase-inhoud, zonder te worden ondersteund door een reproduceerbare benchmark. Het wordt nu intern behandeld als niet-ondersteund. Dezelfde regel is van toepassing op elk cijfer dat wordt weergegeven door een concurrerende runtime, inclusief Instaboot, zolang er geen gedesaggregeerde methodologie bij hoort.

#
Code ingecheckt

Wat Aurabase vandaag kan zeggen over zijn eigen koude start, en wat het niet kan zeggen

Aurabase voert zijn Edge-functies uit op Wasmtime in productie, niet in een pilotproject. Dit is precies wat de indiening mogelijk maakt en waar die claim eindigt.

3
GEciteerde WASM-LOOPTIJDEN
Wasmtime, Wasmer, WasmEdge
0
BENCHMARK KOUDE START AURABASE VRIJGEGEVEN
Tot nu toe geen reproduceerbare en gedateerde meting
43
WASMTIME-VERSIE IN PRODUCTIE
aura-functions/Cargo.toml, productafhankelijkheid

De afhankelijkheid wordt hard verklaard, met de functies async en cranelift geactiveerd, in de productieafhankelijkheden van de service, niet in een dev-dependency, noch een commentaar:

Cargo.tomltoml
# Werkelijk uittreksel uit de repository
[dependencies]

# WASM-runtime
wasmtime = { version = "43", features = ["async", "cranelift"] }

Wat dit bestand niet zegt: er bestaan ​​momenteel geen koudestartcijfers gemeten volgens het protocol beschreven in onze benchmarkmethodologie in de repository voor deze runtime. Totdat een gedateerde meting, met uitgesplitste percentielen, hardware en werklast, is gepubliceerd, mag geen Aurabase-cijfer worden aangehaald als gemeten kenmerk van het product. Voor de algemene architectuur van het platform, zie ons pijlerartikel Aurabase Rust-architectuur. Voor een concrete vergelijking tussen koude start WASM en koude start container, onafhankelijk van de methodologische vraag die hier wordt behandeld, zie ons speciale artikel WASM versuscontainers.

#
Leesraster

Hoe u een koudstartnummer kunt lezen voordat u het gelooft

Zeven vragen die je aan elk koudstartfiguur kunt stellen, inclusief de onze op de dag dat we er een uitbrengen.

  1. Welke fasen zijn inbegrepen? Netwerkbelasting, validatie, compilatie, instantiatie, eerste oproep: een cijfer dat slechts een deel ervan telt, is niet vergelijkbaar met een cijfer dat ze allemaal telt.
  2. Was de module echt “koud”? Een module die zich al in het geheugen of de schijfcache bevindt, test niet hetzelfde als een module die voor de eerste keer wordt geladen.
  3. JIT-compilatie of voorgecompileerd artefact (AOT)? De twee strategieën hebben structureel verschillende opstartkosten.
  4. Eén cijfer of verdeling? Een beste serie op tien heeft niet dezelfde waarde als een p95 op duizend runs.
  5. Uitrusting en regio gespecificeerd? Een figuur zonder hardwarespecificatie kan niet door derden worden gereproduceerd.
  6. Vergelijking bij gelijke belasting en topologie? Het vergelijken van een zelf-hostende runtime met een beheerde service zonder dit te melden, vertekent de lezing.
  7. Datum en versie van de geteste runtime? Een ongedateerd cijfer over een project dat snel evolueert, betekent na een paar maanden niets meer.
#
Veelgestelde vragen

Veelgestelde vragen

Wat is de koude start van WebAssembly precies?+
Dit is de tijd die de aankomst van een verzoek voor een nog niet actieve functie scheidt van de eerste effectieve reactie ervan. Deze keer worden verschillende afzonderlijke fasen toegevoegd: het laden van de module, het valideren van de bytecode, het compileren of koppelen, instantiatie (lineair geheugen, tabellen, globale gegevens) en vervolgens het verwerken van het verzoek. Twee koudestartcijfers meten niet noodzakelijkerwijs dezelfde fasen.
Is het cijfer “WebAssembly koude start minder dan 1 ms” waar?+
Dit cijfer is publiekelijk verspreid, ook in eerdere Aurabase-inhoud, zonder te worden ondersteund door een reproduceerbare benchmark met opgesplitste hardware, werklast en methode. Het wordt nu intern behandeld als niet-ondersteund. Dezelfde waarschuwing geldt voor koudestartnummers die worden weergegeven door een concurrerende runtime zonder gepubliceerde methodologie.
Wat is Instaboot, de Wasmer-functie?+
Volgens de productpositionering die Wasmer publiekelijk communiceert, herstelt Instaboot een exemplaar dat al is geïnitialiseerd door een momentopname, in plaats van bij elk verzoek een volledig opstarten opnieuw te starten. Dit artikel bevat geen prestatiecijfers die op de Wasmer-productpagina worden weergegeven: zonder afzonderlijke methodologie en materiaal zou het opnieuw publiceren van dit cijfer het probleem reproduceren dat het documenteert.
Heeft Aurabase een koudestartcijfer vrijgegeven voor zijn Edge-functies?+
Nee. Aurabase draait Wasmtime versie 43 (asynchrone en kraanliftfuncties) als productieafhankelijkheid in aura-functies, een feit dat rechtstreeks wordt geverifieerd in Cargo.toml van de service. Maar er bestaat momenteel geen koudestartbenchmark die een reproduceerbaar en gedateerd protocol volgt in de repository voor deze runtime.
Start WebAssembly sneller dan een container?+
Architectonisch gezien heeft een WebAssembly-module een kleiner opstartoppervlak dan een container (geen gastkernel, geen volledig bestandssysteem om te mounten), wat een snelle koude start plausibel maakt. Maar het werkelijke verschil hangt sterk af van het geteste scenario. Ons artikel gewijd aan de vergelijking tussen WASM en containers onderzoekt dit punt met concrete gevallen.

Geciteerde externe bronnen: openbare productdocumentatie Wasmer (Instaboot), openbare projectdocumentatie Wasmtime (Bytecode Alliance), geraadpleegd ter voorbereiding van dit artikel, zonder onafhankelijke dubbele controle van de prestatiecijfers die ze tonen.

KLAAR VOOR IMPLEMENTATIE?

Uw backend in vijf minuten.

Geen creditcard vereist · 500 MB gratis · 50.000 MAU