build compilation linker rust rust-cargo

build - ¿Es posible acelerar la compilación de Rust al vincular una biblioteca grande?



compilation linker (1)

Una cosa que puede hacer es separar su código que interactúa directamente con Servo del resto de su proyecto en su propia biblioteca dentro de su proyecto.

project-rs ├── Cargo.toml ├── src │ ├── bin │ │ └── main.rs │ ├── this_needs_servo │ │ └── Cargo.toml │ │ └── lib.rs │ └── ui │ └── Cargo.toml │ └── lib.rs └── tests └── tests.rs

Usted agregaría

[dependencies.this_needs_servo] path = "src/this_needs_servo"

al Cargo.toml en su directorio raíz de proyectos y mueva la dependencia del servo al Cargo.toml bajo su lib de this_needs_servo .

Para usar esta biblioteca, puede agregar la extern crate this_needs_servo; más todas las declaraciones de use requeridas para sus main.rs.

Ahora, el servo solo debe compilarse cuando se cambia algo en la this_needs_servo .

Estoy experimentando largos tiempos de compilación consecutivos cuando incrusté Servo como parte de mi binario. Por ejemplo, al usar este tutorial para incrustar Servo , después de que se realice la compilación inicial, cualquier modificación de mi código requerirá 40s + para reconstruir el binario en la cuarta generación de i7 de cuatro núcleos:

Aquí está la salida de muestra de Cargo:

❯ cargo build Finished dev [unoptimized + debuginfo] target(s) in 0.1 secs ❯ touch src/main.rs ❯ cargo build Compiling servo-embedding-example v0.1.0 Finished dev [unoptimized + debuginfo] target(s) in 57.9 secs

Estoy ejecutando una cadena de herramientas nocturna muy reciente:

❯ rustc --version rustc 1.25.0-nightly (15a1e2844 2018-01-20) ❯ cargo --version cargo 0.26.0-nightly (6a8eb71f6 2018-01-13)

Y la construcción incremental está en:

❯ echo $CARGO_INCREMENTAL 1

No estoy planeando actualizar Servo a menudo, pero necesito mi aplicación. ¿Hay alguna manera de acelerar el tiempo de construcción?