2

我创建了 2 个简单的“Hello World!” 程序,一个使用 Kotlin,一个使用 Rust:

科特林:

fun main() {
    println("Hello, world!")
}

锈:

fn main() {
    println!("Hello, world!");
}

kotlinc-native main.kt为 Kotlin 和cargo build --releaseRust 生成了可执行文件,然后使用ls -S -lh | awk '{print $5, $9}'.

我发现 Kotlin native 生成​​的文件是 Rust 生成的文件大小的 1.48X。

为什么会存在这种差异?

$ ./program.kexe
Hello, world!
$ ls -S -lh | awk '{print $5, $9}'

835K program.kexe
43B main.kt

$ ./rust
Hello, world!
$ ls -S -lh | awk '{print $5, $9}'

565K rust
128B deps
104B rust.d
64B build
64B examples
64B incremental
64B native

此外,Rust 可以优化为更小,Kotlin native 中是否有类似的东西?

最初设定:

$ cargo new hello_world

构建:

$ cargo build

=>589,004 bytes

优化步骤 1:

构建:

$ cargo build --release

=>586,028 bytes

优化步骤 2:

将内容更改  main.rs  为:

 use std::alloc::System;

#[global_allocator]
static A: System = System;

fn main() {
    println!("Hello, world!");
}

=>335,232 bytes

优化步骤 3:

在下面添加到Cargo.toml.

[profile.release]
lto = true

=>253,752 bytes

优化步骤 4:

通过剥离可执行文件

$ strip target/release/hello_world

=>177,608 bytes

所以,我们最终得到 kotlin native 生成​​的文件是 rust 生成的文件的 4.87X (~ 5X)

4

1 回答 1

8

Rust 没有垃圾收集器

于 2018-10-16T08:24:02.630 回答