CRC32 vs CRC32C?
Was ist der Unterschied von CRC32 und CRC32C? Ich weiß, CRC32 für eine lange Zeit, aber nur gehört, CRC32C heute. Sind Sie im Grunde die gleiche Methode (also beide Ergebnisse in die gleiche hash für einen gegebenen Datensatz)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den CRC32 gefunden in zip und vielen anderen Orten verwendet das Polynom 0x04C11DB7; seine umgekehrte form 0xEDB88320 ist vielleicht besser bekannt, Häufig gefunden in little-endian-Implementierungen.
CRC32C verwendet ein anderes Polynom (0x1EDC6F41, Umgekehrt 0x82F63B78) aber sonst ist die Berechnung die gleiche ist. Die Ergebnisse sind unterschiedlich, natürlich. Dies ist auch bekannt als Castagnoli CRC32 und die meisten Auffällig gefunden, in den neueren Intel-CPUs das berechnen, eine vollständige 32-bit-CRC-Schritt 3 Zyklen. Das ist der Grund, warum die CRC32C wird immer beliebter, da Sie es ermöglicht, erweiterte Implementierungen effektiv zu verarbeiten, ein 32-bit-Wort pro Zyklus trotz des drei-Zyklen-Latenz (durch die Verarbeitung von 3-streams von Daten in parallelen und der linearen algebra um die Ergebnisse zu kombinieren).
crc32
Anweisung verarbeiten kann 8 bytes (64 bits), so dass mit einem 3-Zyklus-Latenz, der sequentielle Durchsatz ~2.67 Byte/Zyklus, und die optimale 3x parallel-version ist in der Nähe von 8 Byte/cycle.