使用查找表或左/右位移以获得2整数的幂是否更快?

Ste*_* Lu 1 performance x86 bit-manipulation

假设我想用第N位设置构建位掩码.我有N作为整数.

哪个更好?1 << N或查找表(指针算术加法)?

我的猜测是单个位移操作比内存查找更快,并且只有一次缓存热才能使LUT有机会.但是,如果是这种情况,那么为什么LUT通常是比特错误问题中最快的解决方案呢?是不是因为我们的CPU现在拥有巨大的缓存?

让我对这个问题进行限定,因为在x86-64这个时刻我最关心这个操作.

Mat*_*ens 6

位移总是远远快于查找表或计算.