网站建设预算和维护,python 手机网站开发,各大网络平台的推广内容和方法,企业网站和官网的区别首先我无意引战#xff0c;但是今天看到某位同学的文章里有某些错误#xff0c;不得不指正一下。1. 测量时间的时候我们使用 std::time::SystemTime::elapsed 即可#xff0c;不必蹩脚的使用两个 system 输出出来还得手动算一下。(当然你说对Rust不熟也就无所谓了)2. 最重要…首先我无意引战但是今天看到某位同学的文章里有某些错误不得不指正一下。1. 测量时间的时候我们使用 std::time::SystemTime::elapsed 即可不必蹩脚的使用两个 system 输出出来还得手动算一下。(当然你说对Rust不熟也就无所谓了)2. 最重要一点。 执行 rust 代码的时候请用 --release cargo 项目请直接执行 cargo run --release在我本机的测试过程➜ demo pwd/Users/wayslog/go/src/demo➜ demo go versiongo version go1.7.1 darwin/amd64➜ demo cat demo.gopackage mainimport (fmtruntimetime)func main() {runtime.GC()t : time.Now()sum : 0for i : 0; i 20000; i {for j : 0; j 20000; j {sum sum i*j}}fmt.Println(time.Now().Sub(t))fmt.Println(sum)}➜ demo go run demo.go236.312079ms39996000100000000➜ demo go build➜ demo ./demo289.696142ms39996000100000000➜ demo cd ~/rust/baka➜ baka git:(master) ✗ cat src/main.rsuse std::time::SystemTime;fn main() {let sys_time SystemTime::now();let mut x 0;let mut i 0;let mut y: u64 0;while x 20000 {i 0;while i 20000 {y y x * i;i i 1;}x x 1;}println!({:?}, sys_time.elapsed());println!(The value of y is: {}, y);}➜ baka git:(master) ✗ cargo run --releaseFinished release [optimized] target(s) in 0.0 secsRunning target/release/bakaOk(Duration { secs: 0, nanos: 0 })The value of y is: 39996000100000000➜ baka git:(master) ✗ cargo build --releaseFinished release [optimized] target(s) in 0.0 secs➜ baka git:(master) ✗ ./target/release/bakaOk(Duration { secs: 0, nanos: 0 })The value of y is: 39996000100000000Rust这里为什么会跑到0秒0ns呢将rust编译到asm我们能看到, 地址在这https://is.gd/CyE36H编译时计算掉了么OK既然编译时计算掉了这个情况那么我们让用户自己输入数字吧这样编译时计算总优化不掉吧➜ baka git:(master) ✗ cat src/main.rsuse std::time::SystemTime;use std::env;fn main() {let mut args env::args();args.next().unwrap();let max_range args.next().unwrap().parse::().expect(not num);let sys_time SystemTime::now();let mut x 0;let mut i 0;let mut y: u64 0;while x max_range {i 0;while i max_range {y y x * i;i i 1;}x x 1;}println!({:?}, sys_time.elapsed());println!(The value of y is: {}, y);}➜ baka git:(master) ✗ cargo build --releaseFinished release [optimized] target(s) in 0.0 secs➜ baka git:(master) ✗ ./target/release/baka 20000Ok(Duration { secs: 0, nanos: 6000 })The value of y is: 39996000100000000➜ baka git:(master) ✗ ./target/release/baka 40000Ok(Duration { secs: 0, nanos: 12000 })The value of y is: 639968000400000000这里Rust编译器可能也做了其他的优化了但是需要分析asm再来看了这里不做赘述。但是无论怎么看 6000 ns (0.006ms) 和 200 ms 都是数量级的差距吧总结一点不会别瞎说这位 gopher 不行啊深表同情。有疑问加站长微信联系(非本文作者)