【发布时间】:2019-05-29 16:58:41
【问题描述】:
我有一个缓慢增长的std::vec::Vec。对于超出其容量的向量的每次重新分配,我希望重新分配由静态数量的元素完成。
例如,我最初分配了一个包含 1024 个元素的向量。当它达到其容量时,我希望它重新分配 32 个元素,并且我希望这个参数是可配置的。
我正在寻找这样的功能:
Vec::new(initial_capacity, capacity_increment);
地点:
initial_capacity = 1024;
capacity_increment = 32;
Rust 中是否提供此功能(夜间或稳定)?
文档说您只能指定初始容量,但不清楚每次重新分配时如何增加大小或是否可以更改此参数。事实上,文档说Vec 将成为(pointer, capacity, length) 三元组不多也不少。
有没有办法进行容量增量配置?
我需要这个功能,因为我可能在向量中有大量元素,并且每次重新分配少量额外容量都会导致我正在运行的进程出现相当大的延迟。
【问题讨论】:
-
你能打电话给
reserve_exact吗? -
“我需要这个功能,因为我可能在向量中有大量元素,并且每次重新分配少量额外容量都会导致我正在运行的进程出现相当大的延迟。” ???看起来你在考虑只是在程序完成后对其进行基准测试,看看你是否有工作台问题。不要在 prod 中过度提交
-
Vec使用的实际分配策略是每次将容量翻倍,因此您描述的行为听起来并不正确。您实际上是通过重复分配来衡量性能问题还是只是在猜测? -
@PeterHall ,我试图弄清楚它如何增加容量,并让它像我需要的那样工作。尚未运行任何测试。
标签: rust