🦀
Rustのバイナリってなんか無駄にでかいイメージがあったので調べてみた。
動機
タイトルの通りです。以前なんとなくC言語で作ったバイナリとサイズ比べたときに、Rustバイナリサイズデカくね?って思って以来、なんとなくRustのバイナリ=大きいみたいなイメージを持っていたのでちゃんと調べてみる。
検証方法
コードの内容によってだいぶ変わってくることは容易に想像できるが、今回はHelloWorldで比較。
それぞれのコードはこんな感じ。
fn main() {
println!("Hello, world!");
}
#include <stdio.h>
int main(void)
{
printf("Hello, World!\n");
}
コンパイル方法
C言語は固定でgcc main.c、Rustは色々試してみる。
結果
サイズはls -lで確認
C言語 15,960
Rustデバックビルド 3,983,480
Rustリリースビルド 435,752
Rustリリースビルド + panic = "abort" 430,896
Rustリリースビルド + panic = "abort" + lto = true 380,408
Rustリリースビルド + panic = "abort" + lto = true + strip /target/release/hello_world 326,048
まとめ
Rustのバイナリサイズはでかい。
おまけ
package main
import "fmt"
func main() {
fmt.Printf("Hello, World\n")
}
go build main.go
1,910,622
Discussion
参考までに、手元の x86_64 Linux 機で
を
cargo build --releaseしてls -lすると 30208 になりました