gpt4 book ai didi

C#快速crc32计算:

转载 作者:行者123 更新时间:2023-12-05 00:42:19 24 4
gpt4 key购买 nike

我使用 Ants 分析了我的应用程序,发现 > 10% 是在 CRC32 计算中。(CRC32 计算是用纯 C# 完成的)

我进行了一些谷歌搜索并了解了 Visual Studio 2008 中的以下内在函数:

_mm_crc32_u8

_mm_crc32_u16

_mm_crc32_u32

_mm_crc32_u64

( http://msdn.microsoft.com/en-us/library/bb514036.aspx )

谁能告诉我/告诉我如何使用这些来替换我的自制 CRC32?

最佳答案

多年来,CRC32 计算速度越来越快。部分是因为实现优化,也因为新的处理器指令变得可用。因此,这个近十年前的问题的新答案!

Stephan Brumme's CRC32 page对 2016 年最后一个优化的概述。FastCRC by Yuri Babich是 Stephan Brumme 和 Bulat Ziganshin 的快速 C++ CRC32 算法“Slicing-by-16”的 2019 C# 实现。他声称他的版本只比原生 CLI C++ 快速 CRC32 实现慢一点(大约 10%)。此算法是较旧的 CRC-32-IEEE。

如果您有能力选择其他变体,请选择 CRC-32C (Castagnoli) .这在 Crc32C.NET 包中可用。

The polynomial in CRC-32C was shown to have better error detection properties, which is the reason for its adoption in newer standards (iSCSI, SCTP, ext4). Aside from higher reliability, CRC-32C now has the advantage of dedicated instruction on newer Intel processors. That's why it is being chosen for high-performance applications, for example Snappy compression algorithm.

Crc32.NET是 Robert Važan 对上述 Crc32C.NET 的 .NET 安全实现,但用于 Crc32 算法。

This library contains optimizations for managed code, so, it really is faster than other Crc32 implementations. If you need exactly Crc32, this library is the best choice. This implementation was investigated as fastest from different variants. Also, it is good for x64 and for x86, so, it seems, there is no sense to do 2 different realizations.

我不知道上述两个 .NET 实现中的哪一个对于经典的 CRC-32-IEEE 算法来说是最快的。 performance comparison table不引用第一个实现。

匿名懦夫的回答指向crcutil ,是 Andrew Kadatch 和 Bob Jenkins 于 2007 年初发明的新型多字 CRC 算法的高性能 CRC 引用实现。新算法针对现代 Intel 和 AMD 处理器进行了大量调整,并且比几乎所有其他软件 CRC 算法快得多。他们 2010 年的论文 Everything we know about CRC but afraid to forget在下载中列出。本文展示了一些可用于避免重新处理某些数据范围的技巧:

  • 增量 CRC 计算
  • 更改初始 CRC 值
  • CRC 的串联
  • 就地修改 CRC 消息
  • 在消息后存储 CRC 值

因此,一旦数据量变得足够大或环境有限时,请尽量聪明地计算需要计算的内容。

关于C#快速crc32计算:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1858947/

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