시도 할 Windows 시스템은 없지만 Linux에서는 정적으로 컴파일 된 Rust hello world가 실제로 동등한 C보다 작습니다. 크기에 큰 차이가있는 경우 Rust 실행 파일을 연결하기 때문일 수 있습니다. 정적으로 C와 동적으로
동적 연결을 사용하면 실행 파일뿐만 아니라 모든 동적 라이브러리의 크기도 고려해야합니다.
따라서 사과를 사과와 비교하려면 둘 다 동적이거나 둘 다 정적인지 확인해야합니다. 컴파일러마다 다른 기본값이 있으므로 동일한 결과를 생성하기 위해 컴파일러 기본값에 의존 할 수는 없습니다.
관심이 있으시면 다음과 같은 결과가 나타납니다.
-rw-r--r-- 1 aij aij 63 4 월 5 일 14:26 printf.c
-rwxr-xr-x 1 aij aij 6696 4 월 5 일 14:27 printf.dyn
-rwxr-xr-x 1 aij aij 829344 4 월 5 일 14:27 printf. 정적
-rw-r--r-- 1 aij aij 59 4 5 14:26 puts.c
-rwxr-xr-x 1 aij aij 6696 4 월 5 일 14:27 puts.dyn
-rwxr-xr-x 1 aij aij 829344 4 월 5 일 14:27 puts.static
-rwxr-xr-x 1 aij aij 8712 4 월 5 일 14:28 rust.dyn
-rw-r--r-- 1 aij aij 46 4 월 5 일 14:09 rust.rs
-rwxr-xr-x 1 aij aij 661496 4 월 5 일 14:28 녹. 정적
이들은 GCC (데비안 4.9.2-10) 4.9.2 컴파일 및 1.0.0-야간 (d17d6e7f1 2015년 4월 2일) (2015년 4월 3일을 내장), 기본 옵션을 모두와와 rustc 된 -static
GCC과 -C prefer-dynamic
에 대한 rustc.
사용하는 puts()
컴파일 단위 수가 더 적을 것이라고 생각했기 때문에 C hello world의 두 가지 버전이 있습니다.
Windows에서 재현하려고하면 여기에 내가 사용한 소스가 있습니다.
printf.c :
#include <stdio.h>
int main() {
printf("Hello, world!\n");
}
puts.c :
#include <stdio.h>
int main() {
puts("Hello, world!");
}
rust.rs
fn main() {
println!("Hello, world!");
}
또한, 다른 양의 디버깅 정보 또는 다른 최적화 수준도 차이를 만들 수 있습니다. 그러나 나는 당신이 큰 차이를보고 있다면 정적 링크와 동적 링크 때문입니다.