x86は、アルゴリズムが32ビットプラットフォーム用に最適化されていることを示します。これは、32ビットの符号なし整数で動作することを意味します。
x64は、64ビットプラットフォーム用に最適化され、64ビットの符号なし整数で動作します。
また、2つの間の結果には互換性がありません。MurmurHash3_x86_128
同じ入力のハッシュ値は、それがそうであるかどうかによって異なりますMurmurHash3_x64_128
。
これは、x64システムでこのハッシュライブラリを使用できるようにするには、x64関数を使用し、x64実行可能ファイルを提供する必要があることを意味しますか?または、単にx86バージョンを使用して、パフォーマンスが低下する可能性がありますか?
64ビットハッシュ関数は32ビットシステム用にコンパイルできますが、コンパイラが計算を2つの部分に分割するため、非常に遅くなります。32ビットのサポートが重要な場合は、x64に最適化された関数ではなく、x86に最適化された関数を使用する必要があります。x64システムでは、32ビットコードは正常に実行されますが、十分に活用されていないと思います。x64に最適化されたアルゴリズムは、64ビットCPUの場合にはるかに効率的です。
_32 _64 _128ビットバージョンは、より多くのビットバージョンがより良い分散を提供することを意味するだけだと私は考えていますか?
答えはイエスだと思います。分布とは、「衝突を引き起こす可能性が低い」という意味です。ハッシュで使用されるメモリの追加ビットごとに、考えられる結果の数が劇的に増加します。4ビットハッシュには16の可能なハッシュがあり、64は18 quintillionを提供します(128は340.2 undecillionを提供します!)。256ビットは非常に多くを提供するため、暗号化セキュリティの目的には十分であることがよくあります。
その他の注意事項:最近のハッシュ関数は、CRC32、AES、SSE2、SIMDなどのCPUの新しい命令セットを利用しています。この関数は特定のCPU機能/命令を利用して、サポートされているハードウェアでパフォーマンスを向上させます。これにより、これらの最新機能をサポートするCPUでのハッシュを大幅に高速化できます。