Saltar al contenido

33 · Compilación

Build de Release

El flag `--release` activa las optimizaciones de Cranelift para generar un binario más rápido, a costa de un build más lento.

En esta página

Por defecto, zolo build compila en modo debug: el build es rápido, pero el binario no está optimizado — adecuado durante el desarrollo. Para distribución, agrega --release: Cranelift aplica sus optimizaciones y el ejecutable resultante es notablemente más rápido en bucles y código intensivo en cómputo.

El ejemplo a continuación mide el tiempo de un bucle de un millón de iteraciones, haciendo observable la diferencia de rendimiento:

Compara zolo build (debug) con zolo build --release: el elapsed debe ser menor en el build optimizado.

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)

Requiere la CLI o el host de Zolo; ábrelo en el playground o ejecútalo localmente.

--release se combina con cualquier --emit — por ejemplo, zolo build --emit obj --release escribe un archivo objeto optimizado. También funciona con --standalone y --windowed (distribución, cubiertos en el capítulo 31).

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br