On 2013-04-18 00:44:02 +0300, Ants Aasma wrote:
> I went ahead and coded up both the parallel FNV-1a and parallel FNV-1a
> + srl1-xor variants and ran performance tests and detection rate tests
> on both.
>
> Performance results:
> Mul-add checksums: 12.9 bytes/s
> FNV-1a checksums: 13.5 bytes/s
> FNV-1a + srl-1: 7.4 bytes/s
>
> Detection rates:
> False positive rates:
> Add-mul FNV-1a FNV-1a + srl-1
> Single bit flip: 1:inf 1:129590 1:64795
> Double bit flip: 1:148 1:511 1:53083
> Triple bit flip: 1:673 1:5060 1:61511
> Quad bit flip: 1:1872 1:19349 1:68320
> Write 0x00 byte: 1:774538137 1:118776 1:68952
> Write 0xFF byte: 1:165399500 1:137489 1:68958
> Partial write: 1:59949 1:71939 1:89923
> Write garbage: 1:64866 1:64980 1:67732
> Write run of 00: 1:57077 1:61140 1:59723
> Write run of FF: 1:63085 1:59609 1:62977
>
> Test descriptions:
> N bit flip: picks N random non-overlapping bits and flips their value.
> Write X byte: overwrites a single byte with X.
> Partial write: picks a random cut point, overwrites everything from
> there to end with 0x00.
> Write garbage/run of X: picks two random cut points and fills
> everything in between with random values/X bytes.
I don't think this table is complete without competing numbers for
truncated crc-32. Any chance to get that?
Greetings,
Andres Freund
-- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services