x86 указывает, что алгоритм оптимизирован для 32-битных платформ.Это означает, что он работает с 32-разрядными целыми числами без знака.
x64 затем оптимизируется для 64-разрядных платформ и работает с 64-разрядными целыми числами без знака.
Кроме того,результаты между двумя несовместимы.Значения хеш-функции для одного и того же ввода будут различаться в зависимости, например, от MurmurHash3_x86_128
или MurmurHash3_x64_128
.
Означает ли это, что я должен использовать функции x64 и предоставить исполняемый файл x64, чтобыв состоянии использовать эту хэш-библиотеку в системах x64?Или я могу просто использовать версию x86 и просто столкнуться с более низкой производительностью?
64-битные хеш-функции могут быть скомпилированы для 32-битных систем, но в итоге получатся довольно медленными, потому что компилятор разбивает вычисления надве части.Если важна 32-битная поддержка, вы должны использовать функцию, оптимизированную для x86, а не оптимизированную для x64.В системах x64 32-битный код работает нормально, хотя я бы посчитал это недостаточным использованием.x64-оптимизированные алгоритмы намного более эффективны, когда на 64-битных процессорах.
Правильно ли я считаю, что _32 _64 _128 битные версии означают только то, что более битные версии предлагают лучшее распространение?
Полагаю, ответ да .Если под распределением вы имеете в виду «вероятность возникновения коллизий меньше».Каждый дополнительный бит памяти, используемый в хэше, резко увеличивает количество возможных результатов.4-битный хэш имеет 16 возможных хэшей, а 64 обеспечивает 18 квинтиллионов (128 тогда дает 340,2 ундециллиона!).256 бит обеспечивают настолько много, что этого часто достаточно для криптографической защиты.
Что еще нужно знать: в последнее время современные хеш-функции используют новые наборы команд ЦП, такие как CRC32, AES, SSE2,SIMD - где функция использует преимущества определенных функций / инструкций ЦП для достижения лучшей производительности при поддерживаемом оборудовании.Это может значительно ускорить хэширование процессоров, поддерживающих эти современные функции.