2

簡単な「Hello World!」を 2 つ作成しました。1 つは Kotlin を使用し、もう 1 つは Rust を使用したプログラム:

コトリン:

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

さび:

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

kotlinc-native main.ktKotlin とcargo build --releaseRustの両方を使用して実行可能ファイルを生成し、 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 倍) になりました。

4

1 に答える 1