gpt4 book ai didi

c++ - 设置/清除位 : bitshift or bitmask lookup?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:27 25 4
gpt4 key购买 nike

我正在研究基于位板的国际象棋引擎,其中一项大量执行的操作是设置/清除无符号 64 位整数中的位。由于我不太了解哪些代码可以在某些处理器上“更快”地运行,因此我无法完全理解这一点。

设置和清除位是一个非常简单的操作,但我应该使用(设置):

uint64_t bitboard |= 1ULL << index;

或:

uint64_t bitboard |= BITMASK[index];

其中 BITMASK[] 是一些预先计算的整数数组,其中恰好设置了一位(在 index 处)。

乍一看,位移位似乎是明显更快的选择,因为位移位总是比内存查找快。

但在国际象棋引擎的上下文中,可能会大量执行此操作,因此将查找表存储在处理器的缓存中是有意义的,这可能会使查找表的使用速度更快。还是会?

此外,它甚至有所作为吗?

可能是一个愚蠢的考虑,但知道也无妨。

最佳答案

与查表相比,移位方法应该更快,因为它避免了额外的内存引用。但出于教育目的,进行基准测试会很有趣。

关于c++ - 设置/清除位 : bitshift or bitmask lookup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com