Mir stellt sich ein bisschen die Frage, warum du (nicht dicht besetzte) Arrays als Filterstufe nehmen willst. Spricht etwas dagegen ein Tupel aus allen Eigenschaften zu hashen?
Meine momentane Vorgehensweise ist nach sorgfältiger Prüfung wirklich die einzig Mögliche.
Dein Vorschlag funktioniert aus folgendem Grund nicht:
Der fertige Filter ist eine Art Schablone zum Parsen von wieder anderen Daten. Diese Daten liegen aber in einem Format vor, bei dem ich nicht direkt zu Anfang alle Attribute auslesen kann. Die Art und Weise der Dekodierung hängt zum Einen von der Existenz eines Filters ab, zum Anderen aber auch teilweise von der konkreten Position im Filter.
Benutzt du für alle Teilbäume die gleiche Filterreihenfolge?
Ja, das ist momentan der Fall. Für die Größe der Struktur ist das aber nicht optimal.
Vom Bauchgefühl wäre es gut, für die ersten Stufen große Filter zu nehmen, die möglichst viele Objekte trennen. Dagegen sollten Filter vermieden werden, die Objekte mit gleichen Eigenschaften aber dort unterschiedlichen Werten trennen, insbesondere wenn deren Filter groß sind.
Die Filterreihenfolge habe ich bereits mal per Hand auf Basis meiner realen Daten geändert und somit auch schon ein wenig optimieren können. Im Grunde könnte ich es hierbei belassen, aber irgendwie würde mich schon interessieren, was das die minimale Größe ist, wenn ich alle Äste einzeln permutiere.