You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Rust中首次迭代运行时远高于后续连续步骤?

问题:首次迭代运行时远高于后续迭代的原因

以下结果一目了然。最终的元测量证明我此前的猜测(测量本身耗时较多)不成立。首次迭代的平均运行时是后续步骤+3次测量时间的4倍以上。请问这是什么原因?

测试代码

use std::time::Instant;

fn main() {
    let v:Vec<(i128,i128)>=vec![
        (23,55007766),
        (45,55884433),
        (42,22663355)
    ];
    for i in v{
        let now_ = Instant::now();
            let now = Instant::now();
            let part1 = i.0*i.1;
            let then = Instant::now();
            println!("runtime_part1: {} ns",(then-now).as_nanos());
            
            let now = Instant::now();
            let part2 = part1*i.1;
            let then = Instant::now();
            println!("runtime_part2: {} ns",(then-now).as_nanos());
            
            let now = Instant::now();
            let part3 = i.0+part2;
            let then = Instant::now();
            println!("runtime_part3: {} ns",(then-now).as_nanos());
        let then_ = Instant::now();
        println!("runtime_iter: {} ns",(then_-now_).as_nanos());
    };
    
    let now = Instant::now();
        let now_ = Instant::now();
        (|| 123123*123123);
        let then_ = Instant::now();
        println!("print: {} ns",(then_-now_).as_nanos());
    let then = Instant::now();
    println!("runtime_measurement: {} ns",(then-now).as_nanos());
}

运行输出

runtime_part1: 30 ns
runtime_part2: 50 ns
runtime_part3: 40 ns
runtime_iter: 23121 ns
runtime_part1: 40 ns
runtime_part2: 40 ns
runtime_part3: 30 ns
runtime_iter: 2440 ns
runtime_part1: 30 ns
runtime_part2: 40 ns
runtime_part3: 30 ns
runtime_iter: 2390 ns
print: 30 ns
runtime_measurement: 960 ns

原因分析

首次迭代的高耗时核心原因是标准IO的初始化开销:

  • 代码中第一次调用println!时,Rust标准库需要完成stdio系统的初始化工作,包括输出流配置、相关系统资源分配等,这部分额外开销只会在首次执行时产生。
  • 后续迭代中,stdio环境已经完成初始化,println!仅需处理实际打印逻辑,耗时自然大幅降低。
  • 从输出数据也能验证这一点:首次runtime_iter包含了3次println!的初始化成本,而后续迭代的runtime_iter仅为正常打印+计算的开销,两者差距正好对应首次IO初始化的额外耗时。

另外,debug模式下Rust编译器未做充分优化,也会让初始化的开销表现得更明显,但这不是核心因素。

内容的提问来源于stack exchange,提问作者tommy1213

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:20:16