使用枚举而不是布尔真的会影响缓存使用吗?

时间:2018-07-15 21:46:50

标签: performance caching enums

我看到了一个注释线程,建议在一般情况下使用枚举而不是布尔值,因为这样可以更清楚地了解调用站点中的参数作用,并且如果需要添加大小写,则重构起来会更容易。

然后有人声称这是一个糟糕的主意,因为它通常会为每个调用创建一个不必要的变量,这将不必要地使用计算资源和缓存空间。

第二项主张成立吗?我的理解是布尔值通常不存储为单个位,而是存储为一组位,这些位的空间足以容纳典型枚举中的额外选项。因此,将需要移动相同数量的数据。

如果我理解正确,那么如果枚举具有3个或更多选项(一个用于存储枚举,一个用于每个检查的派生布尔值),则将需要一个额外的变量,但是在这种情况下,您实际上需要三个选择,您该怎么办?如果您有两个枚举选项,那么编译器就不能将其转换为同一寄存器中的布尔值(假设枚举值指定为不具有一个0值和一个非零值),因此不使用任何多余的空间?

我想再增加一条比较指令,但是如今,缓存的使用似乎在性能上要大得多。而且,如果您有一个与布尔值同形的枚举,则无论如何通常都会使这些值自动执行,因此编译器应该可以自由地对其进行完全优化。

我是否正确理解这一点,或者我缺少什么?

0 个答案:

没有答案