【发布时间】:2020-07-20 03:32:42
【问题描述】:
所以,我熟悉使用整数内的单个位打包一堆布尔值的概念(我认为它称为位掩码),因此您可以节省内存,因为布尔值是一个字节并且您适合一个字节长整数中的多个布尔值。因此,如果你有足够的布尔值,将它们打包在一起会产生很大的不同,我们看到在原生虚幻源代码中,这种特殊的优化被大量使用。但是,我不清楚的是,这有什么缺点?有些地方使用了许多常规布尔值。另外,为什么在某些地方使用 uint32 而在某些地方使用 unint8?我读过可能存在一些与读写相关的低效率或什么?
【问题讨论】:
-
一般来说,昂贵的部分是将数据从您的 cpu 传递到 gpu,反之亦然。因此,当这种情况发生时,很可能会使用位掩码(将多个布尔值打包到一个字节中)。这样做的缺点是可读性。对所有内容都使用一个布尔变量可以降低开发人员意外获取错误值的可能性,因此在不重要的地方可以首选单独的布尔变量。
标签: c++ integer boolean unreal-engine4 bitmask