Ich hatte so ein Problem auch mal. Ich habe dabei festgestellt, dass nicht die Funktion Pos, also die Mustersuche der Flaschenhals war, sondern der Zugriff auf die zig-tausend Objekte. Die Verwendung einer schnelleren Alternative zu Pos bringt da praktisch nichts.
Ich habe das dann so gelöst, dass ich die Strings von allen Daten in einen String zusammenschreibe, und in einem zusätzlichen Array merke, an welcher Stelle des Super-Strings welches Objekt anfängt. (Benötigt natürlich doppelten Speicherplatz
).
Diesen String durchsuche ich dann, und bei einem Treffer an Position x suche ich binär in dem Index-Array, welches Objekt an dieser Stelle steht. Das wird dann angezeigt, die übrigen nicht.
Die Größenordnungen sahen bei mir in etwa so aus: String-Gesamtgröße: ca. 10mb, 50.000 Objekte. Durchsuchen vor der Optimierung: ~300ms. Duchsuchen mit Pos-Alternative: ~250ms. Suchen mit neuer Methode: <50 ms. Das war dann schnell genug für "Echtzeit-Suche".
The angels have the phone box.