Diese raumfüllenden Kurven ermöglichen es, die Lokalität in mehreren Dimensionen beizubehalten, wenn Sie linear entlang der Kurve "gehen".
Wie ich gesehen habe, wird Z-Order (auch als Morton-Code bekannt) am häufigsten verwendet, da der Rechenaufwand konstant (und günstig) ist, um auf einen beliebigen Punkt der Kurve direkt zuzugreifen. (Und einfach in Hardware mit 0-Zyklus-Einbußen zu implementieren, da dies dem "nur Schalten" von Adressleitungen entspricht).
Ein konkretes Beispiel für eine Z-Order-Kurve ist das Textur-Swizzling: Dies erhöht im Grunde die Cache-Trefferrate für Textur-Lesevorgänge auf GPUs. (Siehe Bilder im Artikel über Z-Curve https://en.wikipedia.org/wiki/Z-order_curve )
Wenn die Textur einfach linear gespeichert wird, erhalten Sie den maximalen Cachetreffer, wenn Sie nur die Textur als 2D-Bild rendern. Wenn Sie sie jedoch auf dem Bildschirm um 90 Grad drehen, geraten Sie in den schlimmsten Fall (Cache-Fehler für jedes gelesene Textur). .
Infolgedessen ist es besser, ein wenig abzuwägen und Ihr Best-Case-Szenario zu senken und für die meisten Muster bessere Cache-Treffer zu erzielen.
Wie ich gesehen habe, erfordern andere Kurven möglicherweise einen rekursiven Schritt für ihre Berechnung und verursachen höhere Kosten als die Z-Kurve mit einem minimalen Gewinn an Lokalitätskohärenz. Ich habe also noch nichts über die Kurve gehört, die für einen praktischen Zweck verwendet wird, außer als Forschungsgegenstand in Mathematik oder kreativen / lustigen Renderings.