我如何阻止持续零?

问题描述 投票:0回答:0
,但在内联n个值中存储。内联存储应使用

Vec

,以便创建一个非常便宜。减少了我的尝试样本:
MaybeUninit
this this汇编,但是代码根始终将内联阵列零零,打败了我想要的优化。例如,我期望
SmallVec
函数仅通过编写单个字节来设置枚举判别。相反
use std::mem::MaybeUninit;
const N: usize = 24;

pub enum SmallVec<T> {
    Inline([MaybeUninit<T>; N]),
    Heap(*mut T)
}

impl<T> SmallVec<T> {
    fn new() -> Self {
        SmallVec::Inline([const { MaybeUninit::uninit() }; N])
    }

    fn clear(&mut self) {
        *self = SmallVec::new();
    }
}

rust游乐场链接

Godbolt链接

我如何避免这种零,以实现所谓的性能优势?感谢您的任何帮助。
	
如果您避免使用非专业化值,则似乎您将获得预期的优化:

rust maybeuninit
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.