我创建了 2 个简单的“Hello World!” 程序,一个使用 Kotlin,一个使用 Rust:
科特林:
fun main() {
println("Hello, world!")
}
锈:
fn main() {
println!("Hello, world!");
}
我
kotlinc-native main.kt
为 Kotlin 和cargo build --release
Rust 生成了可执行文件,然后使用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)