Hi, ich würde erst mal einen
Profiler hernehmen, um zu schauen, was überhaupt genau der Flaschenhals ist. Nicht, dass du viel Energie in die Optimierung der falschen Stelle investierst.
Arrays sind in der Regel eine gute Wahl, wenn es um Performance geht.
Falls das Löschen und anschließende Updaten der Referenzen wirklich der Flaschenhals ist, dann würde mir spontan die Lösung einfallen, einfach beim Löschen Lücken im Array zu lassen, statt sie direkt wieder zu füllen. Das Array wird dann zwar etwas fragmentieren, aber so schlimm ist das nicht. Wenn ein neues Element eingefügt wird, dann wird es einfach in die erste freie Lücke eingefügt.