Rust:String::from()、 into()、to_string()哪个效率高?

据说rust早期版本中,String::from()、into()、to_string(),推荐前两种算法,后面一种说开销大,效率低。因此想测试一下:

一、代码

use std::thread;
use std::time::{Duration, SystemTime};
fn main() {
    println!("下面开始比较三种方法:");
    let sy_time0 = SystemTime::now();
    let n = 100000000; //1个亿次数
    for _ in 0..n {
        let _x: String = "hello".to_string();
    }
    println!(
        "to_string:() => time :{} seconds",
        SystemTime::now()
            .duration_since(sy_time0)
            .unwrap()
            .as_secs()
    );
    let sy_time1 = SystemTime::now();
    for _ in 0..n {
        let _x: String = String::from("hello");
    }
    println!(
        "string::from() => time :{} seconds",
        SystemTime::now()
            .duration_since(sy_time1)
            .unwrap()
            .as_secs()
    );

    let sy_time2 = SystemTime::now();
    for _ in 0..n {
        let _x: String = "hello".into();
    }
    println!(
        "into() => time :{} seconds",
        SystemTime::now()
            .duration_since(sy_time2)
            .unwrap()
            .as_secs()
    );

    thread::sleep_ms(500000);
}

二、测试结果

1亿次的测试结果如下:

在这里插入图片描述

也就是说,这三种方法相差无几。

to_string()方法已经经过优化了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值