PRODPlataforma BaaS europeia soberanaAbra o painel →

Engenharia · 9 minutos de leitura

Inicialização a frio do WebAssembly: o que os benchmarks mostram

Affane Daylami · Fondateur · 19 de junho de 2026

Voltar ao blog

Nenhum tempo de execução do WebAssembly publica atualmente um valor de inicialização a frio medido de acordo com um protocolo compartilhado, desagregado e reproduzível por terceiros. Wasmtime, Wasmer e WasmEdge mostram argumentos de inicialização rápida, mas raramente a mesma definição da palavra "boot". Este artigo não adiciona mais um número à pilha: ele explica o que uma partida a frio realmente mede, por que os números publicados não se comparam e onde realmente se encontra o Aurabase, que está executando o wasmtime em produção sem ainda ter publicado seu próprio benchmark.

Este texto em inglês foi gerado automaticamente a partir do original em francês e ainda não foi revisado.
Esta página foi traduzida automaticamente. A versão em inglês é oficial.

Esta é a continuação lógica da nossa metodologia de benchmark , desta vez aplicada a uma métrica específica. Para obter detalhes da arquitetura de nossas funções Edge, consulte nosso artigo principal sobre a arquiteturaRust do Aurabaseou nossa comparação Wasmtime vs Wasmer para as diferenças arquiteturais entre os dois tempos de execução.

O essencial

Uma inicialização a frio do WebAssembly adiciona várias fases (carregar, confirmar, compilar ou vincular, instanciar, primeira chamada) e duas figuras que não incluem as mesmas fases não são comparáveis, mesmo que exibam a mesma unidade. Wasmer comercializa o Instaboot como uma resposta direta de marketing ao assunto, mas suas figuras públicas não são incluídas aqui sem uma metodologia desagregada. Aurabase executa wasmtime versão 43 como uma dependência de produção para suas funções Edge (verificadas em aura-functions/Cargo.toml), mas não publicou nenhum benchmark de inicialização a frio reproduzível até o momento. Nenhum número do Aurabase é fornecido neste artigo: o assunto é o método.

#
Observação

Por que a inicialização a frio do WebAssembly se tornou mais uma vez um argumento de marketing controverso

A inicialização a frio tornou-se mais uma vez um eixo de diferenciação comercial entre os tempos de execução do WebAssembly, e não apenas um assunto de pesquisa acadêmica. Wasmer torna isso um argumento de venda explícito com um recurso chamado Instaboot, apresentado como uma resposta direta ao problema de inicialização a frio.

Esse reflexo lembra exatamente a dinâmica já documentada em nosso artigo sobre a metodologia de backend benchmark : vários fornecedores concorrentes exibem números de desempenho em suas próprias páginas de produto, sem sempre especificar o protocolo que os produziu. Um valor de partida a frio sem método prova nada mais do que um valor de latência sem método.

A mesma armadilha de qualquer outro benchmark

Um valor de cold start publicado numa página de marketing, sem material, sem carga de trabalho e sem uma definição clara do ponto de partida e do ponto final da medição, é indistinguível de um slogan. Isso se aplica a todos os tempos de execução citados neste artigo, incluindo o Aurabase no dia em que o valor é divulgado.

#
Definição

O que uma partida a frio realmente mede e por que a definição muda tudo

Uma partida a frio não é uma operação única: é uma soma de fases distintas, e dois fornecedores não medem necessariamente as mesmas fases sob o mesmo nome.

CarregandoRecuperação do módulo .wasm: rede, disco ou já presente na memória
ValidaçãoVerificando a estrutura de bytecode do WebAssembly antes da execução
Compilando ou vinculandoJIT on the fly (Cranelift, LLVM) ou vinculando um artefato já pré-compilado (AOT)
InstanciaçãoAlocação de memória linear, tabelas e globais, execução de uma possível função de início
Primeira chamadaProcessamento do próprio pedido, ora incluído no valor anunciado, ora excluído

Uma figura que conta apenas a instanciação de um módulo já carregado e já compilado na memória parecerá mecanicamente melhor do que uma figura que inclui carregamento e compilação de rede. Nenhum dos dois é falso em si: o problema surge quando os comparamos sem especificar qual dos dois foi medido.

#
Pesquisa acadêmica

O que a literatura acadêmica mostra e por que seus números não se comparam

Trabalhos acadêmicos publicados como pré-impressão no arXiv nos últimos anos mediram o tempo de instanciação de módulos WebAssembly em diferentes tempos de execução. O ponto comum entre esses trabalhos não é um número convergente: é uma diferença significativa dependendo do tempo de execução testado, do tamanho do módulo e do hardware utilizado.

Não incluímos voluntariamente neste artigo quaisquer números precisos retirados dessas publicações. Sem ter verificado minuciosamente a metodologia de cada artigo no momento da redação, republicar um número isolado reproduziria exatamente o problema que este artigo documenta: um número sem o contexto que nos permitiria saber o que ele realmente mede.

O que essa variação aprende, por outro lado, é diretamente útil: uma inicialização a frio depende fortemente do contexto de medição, exatamente como lembrado pela disciplina de paridade de ambiente descrita em nosso artigo de metodologia geral (hardware idêntico, mesma região, mesmo estado de cache para todos os sistemas comparados).

#
Cenário de tempo de execução

Wasmtime, Wasmer, WasmEdge: diferentes prioridades de compilação

Os três tempos de execução independentes do WebAssembly mais citados neste debate não equilibram a velocidade de compilação e o desempenho de execução da mesma maneira, o que explica em parte por que seus números de inicialização a frio não são comparados termo a termo.

Estava na horaBack-end de compilação do Cranelift, com historicamente uma possível rota de pré-compilação antes da implantaçãoUsado em produção pela Aurabase para funções Edge
WasmerDocumentou há muito tempo vários back-ends intercambiáveis, incluindo um back-end projetado para velocidade de compilação em vez de desempenho em tempo de execuçãoMarkets Instaboot, uma reinicialização por snapshot de uma instância já inicializada
WasmEdgePosicionamento público focado no início rápido, com argumento competitivo próprioTempo de execução alternativo também ativo nesta área de marketing
Esta tabela é usada para ilustrar a incomparabilidade, não para classificar tempos de execução

Essas arquiteturas são documentadas publicamente pelos próprios projetos. Não os verificamos novamente versão por versão para este artigo e eles não constituem uma classificação de desempenho. Eles apenas explicam por que três valores de partida a frio exibidos por três tempos de execução diferentes podem ser precisos e ainda assim não serem comparáveis ​​entre si.

Para obter detalhes completos da arquitetura entre os dois tempos de execução mais frequentemente opostos em discussões sem servidor, consulte nossa comparação dedicada Wasmtime vs Wasmer.

#
Requalificação

O que o Instaboot mostra e o que a página do produto por si só não prova

De acordo com o posicionamento do produto que Wasmer comunica publicamente, o Instaboot restaura uma instância já inicializada por um mecanismo de snapshot, em vez de reiniciar uma inicialização completa a cada solicitação. É uma escolha arquitetônica real que é consistente com o problema que visa.

O que este artigo não faz, entretanto, é repetir um número de desempenho exibido na página do produto Wasmer. Sem saber qual hardware, qual carga de trabalho e qual protocolo de medição produziu esse número, republicá-lo cometeria exatamente o erro documentado acima: tratar um número de marketing como um resultado de benchmark independente.

O precedente que justifica esta cautela

Um número como “inicialização a frio inferior a 1 ms” já circulou publicamente, inclusive em conteúdos anteriores do Aurabase, sem ser apoiado por um benchmark reproduzível. Agora é tratado internamente como sem suporte. A mesma regra se aplica a qualquer figura exibida por um tempo de execução concorrente, incluindo o Instaboot, desde que nenhuma metodologia desagregada o acompanhe.

#
Verificado no código

O que a Aurabase pode dizer hoje sobre sua própria partida a frio e o que não pode

Aurabase executa suas funções Edge no Wasmtime em produção, não em um projeto piloto. Aqui está exatamente o que o pedido permite e onde termina a reivindicação.

3
TEMPOS DE EXECUÇÃO DO WASM CITADOS
Wasmtime, Wasmer, WasmEdge
0
BENCHMARK COLD START AURABASE LANÇADO
Nenhuma medição reproduzível e datada até o momento
43
VERSÃO WASMTIME EM PRODUÇÃO
aura-functions/Cargo.toml, dependência de produção

A dependência é declarada hard, com os recursos async e cranelift ativados, nas dependências de produção do serviço, não em dev-dependency nem em comentário:

Cargo.tomltoml
# Extrato real do repositório
[dependencies]

# Tempo de execução WASM
wasmtime = { version = "43", features = ["async", "cranelift"] }

O que este arquivo não diz: nenhum valor de partida a frio medido de acordo com o protocolo descrito em nossa metodologia de benchmark existe hoje no repositório para este tempo de execução. Até que uma medição datada, com percentis desagregados, hardware e carga de trabalho, seja publicada, nenhum valor do Aurabase deve ser citado como uma característica medida do produto. Para a arquitetura geral da plataforma, consulte nosso artigo principal Aurabase Rust arquitetura. Para uma comparação concreta entre o WASM de inicialização a frio e o contêiner de inicialização a frio, independente da questão metodológica abordada aqui, consulte nosso artigo dedicado WASM vscontêineres.

#
Grade de leitura

Como ler um número de inicialização a frio antes de acreditar

Sete perguntas a serem feitas a qualquer figura de partida a frio, incluindo a nossa no dia em que lançarmos uma.

  1. Quais fases estão incluídas? Carregamento de rede, validação, compilação, instanciação, primeira chamada: um número que conta apenas parte dela não é comparável a um número que conta todos eles.
  2. O módulo estava realmente “frio”? Um módulo já na memória ou cache de disco não testa a mesma coisa que um módulo carregado pela primeira vez.
  3. Compilação JIT ou artefato pré-compilado (AOT)? As duas estratégias têm custos iniciais estruturalmente diferentes.
  4. Único dígito ou distribuição? Uma melhor execução em dez não tem o mesmo valor que um p95 em mil execuções.
  5. Equipamento e região especificados? Uma figura sem especificação de hardware não pode ser reproduzida por terceiros.
  6. Comparação com carga e topologia iguais? Comparar um tempo de execução auto-hospedado com um serviço gerenciado sem relatá-lo distorce a leitura.
  7. Data e versão do tempo de execução testado? Um número sem data em um projeto que está evoluindo rapidamente não significa nada depois de alguns meses.
#
Perguntas frequentes

Perguntas frequentes

O que exatamente é a inicialização a frio do WebAssembly?+
Este é o tempo que separa a chegada de uma solicitação de uma função ainda não ativa e sua primeira resposta efetiva. Desta vez adiciona várias fases distintas: carregamento do módulo, validação do bytecode, compilação ou vinculação, instanciação (memória linear, tabelas, globais) e, em seguida, processamento da solicitação. Dois valores de partida a frio não medem necessariamente as mesmas fases.
O valor “Início a frio do WebAssembly com menos de 1 ms” é verdadeiro?+
Este número circulou publicamente, inclusive em conteúdos anteriores do Aurabase, sem ser apoiado por um benchmark reproduzível com hardware, carga de trabalho e método desagregados. Agora é tratado internamente como sem suporte. O mesmo cuidado se aplica a quaisquer números de inicialização a frio exibidos por um tempo de execução concorrente sem uma metodologia publicada.
O que é Instaboot, o recurso Wasmer?+
De acordo com o posicionamento do produto que Wasmer comunica publicamente, o Instaboot restaura uma instância já inicializada por snapshot em vez de reiniciar uma inicialização completa a cada solicitação. Este artigo não inclui nenhum número de desempenho exibido na página do produto Wasmer: sem metodologia e material separados, a republicação deste número reproduziria o problema que ele documenta.
A Aurabase divulgou um valor de inicialização a frio para suas funções Edge?+
Aurabase executa o Wasmtime versão 43 (recursos assíncronos e Cranelift) como uma dependência de produção em aura-functions, fato verificado diretamente no Cargo.toml do serviço. Mas atualmente não existe nenhum benchmark de inicialização a frio seguindo um protocolo reproduzível e datado no repositório para este tempo de execução.
O WebAssembly inicia mais rápido que um contêiner?+
Arquitetonicamente, um módulo WebAssembly tem uma superfície de inicialização menor que um contêiner (sem kernel convidado, sem sistema de arquivos completo para montar), o que torna plausível uma inicialização rápida a frio. Mas a diferença real depende fortemente do cenário testado. Nosso artigo dedicado à comparação entre WASM e contêineres explora esse ponto com casos concretos.

Fontes externas citadas: documentação pública do produto Wasmer (Instaboot), documentação pública do projeto Wasmtime (Bytecode Alliance), consultada na preparação para este artigo, sem verificação dupla independente dos números de desempenho que mostram.

PRONTO PARA IMPLEMENTAR?

Seu back-end em cinco minutos.

Não é necessário cartão de crédito · 500 MB grátis · 50.000 MAU