Bitboard 64 位机器:对于 4x4 板,我应该使用 int16 还是 int64?
Bitboard 64-bit machine: should I use int16 or int64 for a 4x4 board?
我正在 64 位机器上使用位板用 C++ 编写一个 4x4 棋盘游戏。我只需要 16 位来实现电路板。我应该使用:
- uint16_t - 减少使用 space?
- uint64_t - 如果使用 64 位整数操作(?)更快,我应该使用它们并在必要时用 0xFFFF(按位与)屏蔽值?
- uint_fast16_t - 我刚刚发现了这个整数类型,但我不确定它是如何工作的以及我是否也需要掩码?
我不知道它是否有帮助,但我的处理器是:Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz 1.99 GHz
- 如果您想节省 space,请使用
uint16_t
。
- 如果您想节省时间,请使用
uint_fast16_t
。
uint64_t
也可能对制作按 8 字节边界对齐的值数组很有用。不过,这不太可能给您带来太多好处,因为它的代价是浪费分配给阵列的 75% 内存,以及相关的缓存性能损失。
注意:如果您的库将 uint_fast16_t
映射到 uint64_t
,您最终可能会使用与 uint64_t
相同的类型。
我正在 64 位机器上使用位板用 C++ 编写一个 4x4 棋盘游戏。我只需要 16 位来实现电路板。我应该使用:
- uint16_t - 减少使用 space?
- uint64_t - 如果使用 64 位整数操作(?)更快,我应该使用它们并在必要时用 0xFFFF(按位与)屏蔽值?
- uint_fast16_t - 我刚刚发现了这个整数类型,但我不确定它是如何工作的以及我是否也需要掩码?
我不知道它是否有帮助,但我的处理器是:Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz 1.99 GHz
- 如果您想节省 space,请使用
uint16_t
。 - 如果您想节省时间,请使用
uint_fast16_t
。 uint64_t
也可能对制作按 8 字节边界对齐的值数组很有用。不过,这不太可能给您带来太多好处,因为它的代价是浪费分配给阵列的 75% 内存,以及相关的缓存性能损失。
注意:如果您的库将 uint_fast16_t
映射到 uint64_t
,您最终可能会使用与 uint64_t
相同的类型。