gpt4 book ai didi

arrays - Rust 中 array::len 的运行时复杂度是多少?

转载 作者:行者123 更新时间:2023-11-29 07:57:22 28 4
gpt4 key购买 nike

Rust 中原始数组的 len 方法的运行时复杂度是多少?我知道 VectorString 是常量,但是这些类型中的每一种都会跟踪它们的长度,我找不到任何文档来说明数组是否属于这种情况。

最佳答案

原始数组具有恒定长度,因此可以安全地假设数组的大小可以在编译期间计算(编译时常量)

给定:

let array = [1, 2, 3, 4, 5];
println!("Length: {}", array.len());

调试构建给出:

callq   alloc::slice::<impl [T]>::len
movq %rax, -16(%rbp)
movq core::fmt::num::<impl core::fmt::Display for usize>::fmt@GOTPCREL(%rip), %rsi

调试构建似乎将责任委托(delegate)给切片的 len 方法。

然而,正如预期的那样,发布版本在编译期间计算一个常量,将其直接压入堆栈并改为使用它:

movq    $5, (%rsp)
movq core::fmt::num::<impl core::fmt::Display for usize>::fmt@GOTPCREL(%rip), %rax

关于arrays - Rust 中 array::len 的运行时复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50689671/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com