在英特尔CPU上的32位和64位内部CRC之间进行选择
Choosing between 32 and 64 bit intrinsic CRC on Intel CPU
为了在INTEL机器上形成哈希函数,我需要计算CRC,并提出了以下两个内在函数:
_mm_crc32_u32
_mm_crc32_u64
在我的项目中,我处理的是32位变量,我的两难选择是对每两个变量进行移位和"或"运算(从而创建一个64位变量),然后使用64位CRC或对两个32位变量中的每一个运行32位CRC。
我在任何地方都找不到这些函数中每一个所需的周期数,从英特尔的函数规范来看,也不清楚哪一个更可取。
同样的困境也适用于CRC函数的16位版本:
_mm_crc32_u16
我试着在CRC前后花些时间来检查它。结果基本相同。所以我需要一种更复杂的计算方法。
不要对哈希值使用CRC。这不是一回事。使用murmurhash来满足经典的计算机科学哈希需求(也就是说,不是巨大的加密强度哈希)。这也有不同宽度的实现。
我不明白你的意思:你有两个32位的值,想要一个它的散列?这可能是明智的,也可能不是明智的,这取决于原因。你能澄清一下你想要实现的目标吗?
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 大小相等但成员数量不同的结构之间的性能差异
- 类与私有变量的其他类之间的线程安全性
- 如何在cpp文件之间切换窗口?在Qt中
- 线程之间的布尔停止信号
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 为什么CRC计算在C和C 版本之间有所不同
- 在英特尔CPU上的32位和64位内部CRC之间进行选择