小编sup*_*_jh的帖子

Rust能保存编译器的优化记录吗?

在 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'

inline llvm compiler-optimization rust rust-cargo

6
推荐指数
1
解决办法
180
查看次数

使用lazy_static!符号表中定义变量的大小为0

以下 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)

symbols elf segment rust lazy-static

0
推荐指数
1
解决办法
61
查看次数