|
|
@ -54,7 +54,7 @@
|
|
|
|
对于前者,那性能如何自然无关紧要。而对于后者,我们只需要使用 `Vec::with_capacity` 提前分配足够的空间即可,同时,Rust 中所有的迭代器还提供了 `size_hint` 也可以解决这种问题。
|
|
|
|
对于前者,那性能如何自然无关紧要。而对于后者,我们只需要使用 `Vec::with_capacity` 提前分配足够的空间即可,同时,Rust 中所有的迭代器还提供了 `size_hint` 也可以解决这种问题。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当然,如果这段代码在热点路径,且你无法提前预测所需的容量,那么链表确实会更节省性能。
|
|
|
|
当然,如果这段代码在热点路径,且你无法提前预测所需的容量,那么链表确实会更提升性能。
|
|
|
|
|
|
|
|
|
|
|
|
#### 链表更节省内存空间
|
|
|
|
#### 链表更节省内存空间
|
|
|
|
首先,这个问题较为复杂。一个标准的数组调整策略是:增加或减少数组的长度使数组最多有一半为空,例如 capacity 增长是翻倍的策略。这确实会导致内存空间的浪费,特别是在 Rust 中,我们不会自动收缩集合类型。
|
|
|
|
首先,这个问题较为复杂。一个标准的数组调整策略是:增加或减少数组的长度使数组最多有一半为空,例如 capacity 增长是翻倍的策略。这确实会导致内存空间的浪费,特别是在 Rust 中,我们不会自动收缩集合类型。
|
|
|
|