Я реализовал кастинг Adler32 в PHP, но поскольку ord
настолько медленный (около 1 МБ в секунду на моей машине для разработчиков), чтобы получить целые значения chanters в строке, это решение не работает для файлов размером 100 МБ +.Быстрая реализация катящегося хеша в PHP
функция Mhash PHP может получить очень быстрый расчет для Adler32 (120Мб в секунду на моем Dev машины). Однако Mhash, кажется, не поддерживает качение характера Adler32, так что вы должны вычислить совершенно новый Adler32 как Циклические двигается, а не просто пересчитать хэш двух байт, которые на самом деле изменились.
Я не привязан к алгоритму Adler32, мне просто нужно очень быстро качению хэш в PHP.
Привет Марк, спасибо за написание ответ. Однако моя проблема заключалась не в реализации вашего (?) Алгоритма (я уже это сделал), а в его реализации в PHP. Получение байтов из строки PHP для работы, кажется, медленный процесс, около 1 МБ в секунду. Внутренняя реализация mhash adler32 отчетливо считывает байты из строки примерно на три порядка или быстрее, но она не дает возможности использовать катящийся характер алгоритма. – Dom
Плюс один за очень полезные советы о модуле. – Dom
Мой ответ решает этот вопрос вы заявили: «так что вы должны вычислить совершенно новый Adler32 как Циклический движется, а не просто пересчитать хэш двух байтов, которые на самом деле изменилось.» Вам не нужно вычислять новый Adler-32 для всего окна, а просто обновлять его для байтов, сброшенных с начала и добавленных в конец. Я ничего не могу сделать о внутренних реализациях PHP. –