对于Minimax-Algorithm I代码,我想尝试按位操作来提高速度。每个游戏状态都保存为UInt128,并描述了一个基于4x4瓦片的棋盘。每个瓦片可以具有从0到32 (独占)的值,因此每个瓦片5位。
+-------+-------+-------+-------+
| 0-4 | 5-9 | 10-14 | 15-19 |
+-------+-------+-------+-------+
| 20-24 | 25-29 | 30-34 | 35-39 |
+-------+-------+-------+-------+
| 40-44 | 45-49 | 50-54 | 55-59 |
+-------+-------+-------+-------+
| 60-64 | 65-69 | 70-74 | 75-79 |
+-------+-------+-------+-------+为了在电路板上实际执行操作,我需要基于3x3的中心从4x4中提取一个3x3块。我该怎么做呢?我可以通过简单地通过位移位访问每个单元格来手动完成,但我想知道是否有更快的方法。
提前感谢!
(Language就是C#,以防万一)
发布于 2017-11-16 02:42:40
位操作非常快。由于您已经可以使用位移位手动执行此操作,因此请复制4x4并将其减少到3x3,然后对其执行操作,并查看是否存在性能问题。
如果执行“操作”意味着只读,这取决于直接访问4x4中的位的成本与复制、移位和仍然需要访问3x3的成本,那么额外的复制可能会更昂贵。
另外,由于您使用的是128位类型,因此可以使用字节16。这将使访问单个单元的速度更快。
https://stackoverflow.com/questions/47313435
复制相似问题