【问题标题】:Implementing CRC16 efficiently高效实施 CRC16
【发布时间】:2014-01-14 07:54:33
【问题描述】:

我有一个程序,我知道它只能在非常特定的硬件上运行,所以我开始使用 SSE4.2 指令集提供的 crc32,但现在我需要 crc16 用于不同的目的。有没有办法哄硬件给我crc16和SSE的crc32一样的性能?

谢谢

【问题讨论】:

    标签: crc crc16


    【解决方案1】:

    如果您有 PCLMULQDQ 指令,您可以使用它来进行快速 CRC。虽然不如 crc32 指令快。

    另外,穷人的校验值可以是 crc32 结果的低 16 位。

    【讨论】:

    • crc32 的前半部分会弱多少?我知道 crc 不是一个统一的哈希函数,所以这样做并不是最优的。编辑:也许对两半进行异或会产生更统一的结果?
    • 这取决于您的应用程序。如果您尝试检测非常少量的位翻转,则 crc32 的一半会比 crc16 弱。如果误差源影响较大,则两者大致相当。在这种情况下,对两半进行异或运算不会有任何区别,因为源位已经在低半部分很好地混合了。对于少数位错误的情况,异或可能会有所帮助。我不确定。
    猜你喜欢
    • 2013-09-06
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2012-12-02
    • 2012-09-04
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多