在英特尔CPU上的32位和64位内部CRC之间进行选择

Choosing between 32 and 64 bit intrinsic CRC on Intel CPU

本文关键字:之间 CRC 行选 选择 内部 64位 CPU 英特尔 上的 32位      更新时间:2023-10-16

为了在INTEL机器上形成哈希函数,我需要计算CRC,并提出了以下两个内在函数:

  1. _mm_crc32_u32
  2. _mm_crc32_u64

在我的项目中,我处理的是32位变量,我的两难选择是对每两个变量进行移位和"或"运算(从而创建一个64位变量),然后使用64位CRC或对两个32位变量中的每一个运行32位CRC。

我在任何地方都找不到这些函数中每一个所需的周期数,从英特尔的函数规范来看,也不清楚哪一个更可取。

同样的困境也适用于CRC函数的16位版本:

_mm_crc32_u16

我试着在CRC前后花些时间来检查它。结果基本相同。所以我需要一种更复杂的计算方法。

不要对哈希值使用CRC。这不是一回事。使用murmurhash来满足经典的计算机科学哈希需求(也就是说,不是巨大的加密强度哈希)。这也有不同宽度的实现。

我不明白你的意思:你有两个32位的值,想要一个它的散列?这可能是明智的,也可能不是明智的,这取决于原因。你能澄清一下你想要实现的目标吗?