LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

fn qspCRC(data: &[u8]) -> i32 {
    data.iter().fold(0, |crc, b| { 
            let tbl  = qspCRCTable[((crc & 0xFF) as u8 ^ b) as usize];
            (tbl as i32^crc>>8) ^ 0xD202EF8Du32 as i32
        })
}

жуть ваще. для простых суммирований массива вводится «итерация» как понятие и fold - как типа «свертка». в алгоритм влез еще какой-то неявный b, который определили волшебным образом вместе с crc. кстати, а какой тип у crc тут?

сишный код(при правильной записи канеш) будет и лишен всяких мусорных доп. понятий и определять все вполне точно.

считать такие хеши надо максимально быстро, а все ваши итераторы и фолды наверняка насыпают много доп. мусора. сравните выхлоп сишного кода и растового.

https://godbolt.org/z/WsKb799jr

там кстати если поставить язык rust, должен быть ваш код. но не уверен. не знак как их ссылки работают.

Исходная версия alysnix, :

жуть ваще. для простых суммирований массива вводится «итерация» как понятие и fold - как типа «свертка». в алгоритм влез еще какой-то неявный b, который определили волшебным образом вместе с crc. кстати, а какой тип у crc тут?

сишный код(при правильной записи канеш) будет и лишен всяких мусорных доп. понятий и определять все вполне точно.

считать такие хеши надо максимально быстро, а все ваши итераторы и фолды наверняка насыпают много доп. мусора. сравните выхлоп сишного кода и растового.

https://godbolt.org/z/WsKb799jr

там кстати если поставить язык rust, должен быть ваш код. но не уверен. не знак как их ссылки работают.