簡単な「Hello World!」を 2 つ作成しました。1 つは Kotlin を使用し、もう 1 つは 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 ネイティブで生成されたファイルは、Rust で生成されたファイルの 1.48 倍のサイズであることがわかりました。
この差異はなぜ存在するのでしょうか。
$ ./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 ネイティブに似ているものはありますか?
初期設定:
$ 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 ネイティブによって生成されたファイルは、Rust によって生成されたファイルの 4.87 倍 (~ 5 倍) になりました。