Hatena::ブログ(Diary)

WebService::Blog->new( user => ’hide_o_55’ )

2013-04-03

多くのMurmurHashの実装がバイトオーダーを考慮していない

(注)dataの型はunsigned char*です。

全部見た訳じゃないですが、https://code.google.com/p/smhasher/をはじめとするMurmurHashの実装は、x86/x86_64等、リトルエンディアン環境を前提とした実装となっており*1SPARCPowerPCといったビッグエンディアン環境では同じキーのハッシュ値が違うものになってしまいます。

よって、バイトオーダーの異なる環境間でのやり取りにMurmurHashを使用すると問題が発生する可能性があります。必要であれば、ビッグエンディアン環境ではバイトオーダーを並べ替えるパッチをあてる等の対策を取りましょう。

*1関数名が_x86となってるので当然と言えば当然