在 C 语言中,我可以使用以下命令输出编译器优化信息:
clang -O2 main.c -o main -fsave-optimization-record
Run Code Online (Sandbox Code Playgroud)
rust是否也有这样的选项来输出优化信息,比如函数内联、参数优化等。我尝试了以下命令,但失败了,
cargo rustc -- -C llvm-args=-fsave-optimization-record
Run Code Online (Sandbox Code Playgroud)
错误信息如下:
rustc -Cllvm-args="..." with:未知的命令行参数“-fsave-optimization-record”。尝试: 'rustc -Cllvm-args="..." with --help'
以下 Rust 代码,在 x86_64 平台编译。
#[macro_use]
extern crate lazy_static;
use std::collections::HashMap;
lazy_static! {
static ref HASHMAP: HashMap<u32, &'static str> = {
let mut m = HashMap::new();
m.insert(0, "foo");
m.insert(1, "bar");
m.insert(2, "baz");
m
};
}
fn main() {
// First access to `HASHMAP` initializes it
println!("The entry for `0` is \"{}\".", HASHMAP.get(&0).unwrap());
// Any further access to `HASHMAP` just returns the computed value
println!("The entry for `1` is \"{}\".", HASHMAP.get(&1).unwrap());
}
Run Code Online (Sandbox Code Playgroud)
我使用readelf命令查看符号表中HASHMAP变量的大小:
readelf -sW target/debug/deps/section_test-4d7d6a03c56fdde3.o
Symbol table '.symtab' contains 590 …
Run Code Online (Sandbox Code Playgroud)