performance - Bitboard 64 位机器:对于 4x4 板,我应该使用 int16 还是 int64?
问题描述
我正在使用 64 位机器中的位板在 C++ 中编写 4x4 棋盘游戏。我只需要 16 位来实现该板。我应该使用:
- uint16_t - 减少使用空间?
- uint64_t - 如果使用 64 位整数进行操作(?)更快,我应该使用它们并在必要时使用 0xFFFF(按位与)屏蔽值吗?
- uint_fast16_t - 我刚刚发现了这个整数类型,但我不确定它是如何工作的,我是否也需要一个掩码?
我不知道它是否有帮助,但我的处理器是:Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz 1.99 GHz
解决方案
- 如果您想节省空间,请使用
uint16_t
. - 如果您想节省时间,请使用
uint_fast16_t
. uint64_t
对于在 8 字节边界对齐的值数组也可能很有用。但是,这不太可能给您带来太多好处,因为它的代价是浪费了为阵列分配的 75% 的内存,以及相关的缓存性能损失。
注意:您最终可能会使用与uint64_t
您的库映射uint_fast16_t
到uint64_t
.
推荐阅读
- javascript - 无法使用vue和moment将参数传递给茉莉花中的按钮方法
- reactjs - 在 React 中使用 this.setState 时遇到“错误:Material-UI:capitalize(string) 需要一个字符串参数”
- android - Dagger2 - 多模块 - 组件中存在具有匹配键的绑定
- node.js - Firebase CLI 部署错误:“部署到 Node.js 10 以下的运行时现在在 Firebase CLI 中被禁用。”
- python - 卷曲请求有效,但在 python-requests 上失败
- amazon-web-services - AWS EC2 Route 53 域错误暂时不可用
- sql - R闪亮的SQL数据库 - 反应式过滤 - 最佳实践?
- reactjs - 如何使用 Material ui 实现服务器端分页并做出反应?
- python-2.7 - Cassandra AttributeError:“PrepareMessage”对象没有属性“consistency_level”
- python - 如何过滤掉连续3天涨价的股票