回答:
違いは、マッピングがいかにうまく局所性を保持するか、およびキーを簡単にエンコード/デコードすることです。HV Jagadishによる論文「複数の属性を持つオブジェクトの線形クラスタリング」は、次のように述べています。文学"。一方、z-orderは少し使いやすく、たとえば、z-orderのBit Twiddling HacksとHilbert-orderのWikipediaにリストされているさまざまなメソッドを比較します。
アプリケーションに関しては、空間充填曲線を使用する主な利点は、高次元の空間から低次元の空間にポイントをマップすることです。たとえば、従来のBツリーデータベースインデックスを使用してポイントのウィンドウクエリを可能にします。繰り返しになりますが、欠点は、後でマッピングの「サイズを変更」することが難しいため、入力の境界を事前に知る必要があることです。
PS:「Z曲線」は「モートンコード」と同じです。
これらの空間充填曲線により、曲線に沿って直線的に「歩く」ときに、複数の次元で局所性を保つことができます。
私が見たものから、Zオーダー(モートンコードとも呼ばれます)は、曲線の任意のポイントに直接アクセスするための一定の(そして安価な)計算コストのため、最も採用されています。(また、「単純な切り替え」アドレスワイヤに対応するため、0サイクルのペナルティでハードウェアに簡単に実装できます)。
Zオーダーカーブの具体例はテクスチャスウィズリングです。これは基本的に、GPUでのテクスチャ読み取りのキャッシュヒット率を増加させます。(Z-Curve https://en.wikipedia.org/wiki/Z-order_curveに関する記事の画像を参照してください)
テクスチャを単純に線形に保存する場合、テクスチャのみを2Dイメージとしてレンダリングすると最大のキャッシュヒットが得られますが、画面上で90度回転すると、最悪のシナリオになります(すべてのテクスチャ読み取りのキャッシュミス) 。
その結果、少しトレードオフし、ベストケースシナリオを低くし、ほとんどのパターンでキャッシュヒットを改善することをお勧めします。
個人的な注意として、私が見たものから、他の曲線は計算に再帰的なステップを必要とし、局所性の一貫性の観点から最小限のゲインでZ-Curveよりも大きなコストをもたらす可能性があります。そのため、数学または創造的/面白いレンダリングの研究対象として以外、実用的な目的で使用される曲線について聞いたことがありません。