Pular para o conteúdo

33 · Compilação

Build de Release

O flag `--release` ativa otimizações do Cranelift para gerar um binário mais rápido, ao custo de um build mais lento.

Nesta página

Por padrão, zolo build compila em modo debug: o build é rápido, mas o binário não está otimizado — indicado durante o desenvolvimento. Para distribuição, adicione --release: o Cranelift aplica suas otimizações e o executável resultante é notavelmente mais rápido em laços e código intensivo em computação.

O exemplo abaixo mede o tempo de um laço de um milhão de iterações, tornando a diferença de desempenho observável:

Compare zolo build (debug) com zolo build --release: o elapsed deve ser menor no build otimizado.

04-release.zolo
Playground
// Feature: optimized native build — `zolo build --release`
// Syntax: `zolo build file.zolo --release`
// When to use: ship a fast binary. `--release` enables Cranelift
//   optimizations; the default (debug) build favors compile speed.

// Run:
//   zolo build 30-compilation/04-release.zolo            # debug (fast to build)
//   zolo build 30-compilation/04-release.zolo --release  # optimized
//
// `--release` combines with any `--emit` (e.g. `--emit zex --release`)
// and with `--standalone` / `--windowed`.

use std::os

// A loop heavy enough that the optimizer matters.
let start = os.clock()
var acc = 0
for i in 0..1_000_000 {
  acc += i % 7
}
print("acc =", acc)
print("elapsed =", os.clock() - start)

// expected: acc =	2999997  (timing varies; --release is noticeably faster)

Requer a CLI/host do Zolo — abra no playground ou rode localmente.

--release combina com qualquer --emit — por exemplo, zolo build --emit obj --release grava um arquivo objeto otimizado. Ele também funciona com --standalone e --windowed (distribuição, cobertos no capítulo 31).

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br