LINUX.ORG.RU

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

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

Нет, конечно. Просто FNV-2 прям очень много где используется, и это демонстрация того, что оно сильно устарело (там множитель подбирался так, чтобы можно было сложениями-вычитаниями-сдвигами умножить, а не «дорогой» инструкцией умножения) и неоптимально (по одному байту обрабатываем T_T).

Я не мерял об xxHash, но оно проигрывает CityHash, где какая-то магия с «мы сделаем вот такое шаманство, чтобы на x86-64 оно вот так зашедулилось, а ещё сделаем rotate через два сдвига и or, компилятор распознает, а ещё наплодим огромное количество реализаций под разные размеры входных данных, а ещё вот эти все константы — мы не знаем, что это за константы, откуда они взялись, но вот этот чувак говорит, что они хорошие, а ещё…».

Ну, я, строго говоря, тоже не говорю, почему я выбрал вот эту константу (у меня она хотя бы одна), но я перебрал все простые < 2^32 и ещё очень много 64-битных.

Исправление shdown, :

Нет, конечно. Просто FNV-2 прям очень много где используется, и это демонстрация того, что оно сильно устарело (там множитель подбирался так, чтобы можно было сложениями-вычитаниями-сдвигами умножить, а не «дорогой» инструкцией умножения) и неоптимально.

Я не мерял об xxHash, но оно проигрывает CityHash, где какая-то магия с «мы сделаем вот такое шаманство, чтобы на x86-64 оно вот так зашедулилось, а ещё сделаем rotate через два сдвига и or, компилятор распознает, а ещё наплодим огромное количество реализаций под разные размеры входных данных, а ещё вот эти все константы — мы не знаем, что это за константы, откуда они взялись, но вот этот чувак говорит, что они хорошие, а ещё…».

Ну, я, строго говоря, тоже не говорю, почему я выбрал вот эту константу (у меня она хотя бы одна), но я перебрал все простые < 2^32 и ещё очень много 64-битных.

Исправление shdown, :

Нет, конечно. Просто FNV-2 прям очень много где используется, и это демонстрация того, что оно сильно устарело (там множитель подбирался так, чтобы можно было сложениями-вычитаниями-сдвигами умножить, а не «дорогой» инструкцией умножения) и неоптимально.

Я не мерял об xxHash, но оно проигрывает CityHash, где какая-то магия с «мы сделаем вот такое шаманство, чтобы на x86-64 оно вот так зашедулилось, а ещё сделаем rotate через два сдвига и or, компилятор распознает, а ещё наплодим огромное количество реализаций под разные размеры входных данных, а ещё вот эти все константы — мы не знаем, что это за константы, откуда они взялись, но вот этот чувак говорит, что они хорошие, а ещё…».

Ну, я, строго говоря, тоже не говорю, почему я выбрал вот эту константу, но я перебрал все простые < 2^32 и ещё очень много 64-битных.

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

Нет, конечно. Просто FNV-2 прям очень много где используется, и это демонстрация того, что оно сильно устарело (там множитель подбирался так, чтобы можно было сложениями-вычитаниями-сдвигами умножить, а не «дорогой» инструкцией умножения) и неоптимально.

Я не мерял об xxHash, но оно проигрывает CityHash, где какая-то магия с «мы сделаем вот такое шаманство, чтобы на x86-64 оно вот так зашедулилось, а ещё сделаем rotate через два сдвига и or, компилятор распознает, а ещё наплодим огромное количество реализаций под разные размеры входных данных, а ещё вот эти все константы — мы не знаем, что это за константы, откуда они взялись, но вот этот чувак говорит, что они хорошие, а ещё…».