Léxico TI › Programación › Monomorphization

Monomorphization

Programación Svenska → Actualizado: 2026-08-22

Implementación de genéricos donde el compilador genera una versión concreta y separada por cada tipo usado. Vec<i32> y Vec<String> son tipos compilados distintos. Rust, C++ y Go (desde 1.18) usan este enfoque.

Ventaja: sin sobrecoste en tiempo de ejecución (nada de despacho virtual ni boxing), todo se puede inlinear y optimizar agresivamente. Desventaja: el binario puede crecer mucho ("template bloat" en C++) — cada uso de T se compila por separado. Dolor de cabeza clásico en Rust: aplicar serde-derive a 100 structs puede disparar la compilación a 30+ minutos. Se diferencia del type erasure (Java, TS), que genera una única versión en tiempo de ejecución. Los trait objects de Rust (dyn Trait) son un despacho dinámico opcional cuando el tamaño del binario importa. Herramientas modernas de Rust: cargo-bloat, llvm-strip, para medir y reducir ese crecimiento.

← Volver al léxico