Geeignetes Werkzeug muss zum Problem passen
Was gibt es grundsätzlich für Möglichkeiten der
Perfomence-Optimierung?
Grundsätzlich gibt es die Möglichkeiten
* Hardware (Schnellerer Rechner)
* Laufzeitumgebung (Effizientere Entwicklungs- und Laufzeitumgebung)
* Algorithmus
Welchen Weg man geht, hängt maßgeblich davon ab, welche Dimension das Problem hat, wie häufig man die Anwendung braucht und welches die Anforderungen sind. Aber vielleicht geht es auch gar nicht um Wirtschaftlichkeit sondern ums Prinzip oder die Reine Lehre.
Im gewerblichen Umfeld dürfte Hardware der billigste Weg sein, da man sich damit ein vergleichsweise niedriges Risiko einhandelt und wenig Personalaufwand in Entwicklung und Test stecken muss.
Die Performance-Steigerung ist aber limitiert und bei wirklich großen Dimensionen schlägt immer die Qualität des Algorithmus durch.
Meist ist eine erhebliche Steigerung in Verbindung mit der Entwicklungs- und Laufzeitumgebung realisierbar. Denn der Unterschied zwischen einer Routine in Maschinencode und einer primitiven Interpretersprache kann schon mal den Faktor 100 bis 1000 ausmachen.
Das gleiche Problem kann mit dem gleichen Algorithmus in Excel VBA programmiert schon mal das in Stunden dauern, wofür eine Implementierung in ANSI C Sekunden gebraucht hätte. Wenn Excel nicht gleich ganz darüber abstürzt.
Kommt einfach daher, dass die gleiche Operation im Prozessor-Cache und Hauptspeicher schneller abläuft als im Hauptspeicher und auf Platte. Da schlägt halt zu, dass Excel 99,9% der Ressourcen für sich selbst verbraucht und damit die Datenmenge und die Anzahl der Operationen gigantisch aufbläht.
Vorsortierung beider Tabellen wäre vielleicht eine
Möglichkeit.
Genau DAS wäre die algorithmisch sinnvollste Lösung, da die Sortierung der beiden Tabellen deutlich weniger Vergleiche benötigt.
Dann müssten nur noch zwei Indizes die sortierten Listen runterlaufen und Quervergleiche anstellen. Statt 80.000.000 nur noch 42.000 Vergleiche (zusätzlich zum Sortieraufwand von ca. 420.000)
Und vielleicht ist beim Anwendungsfall auch noch eine Tabelle langfristig stabil.
Könnte z. B. das Einlesen der 2.000 Datensätze in ein Array
Zeitvorteile beim Vergleichen bringen?
Eine Optimierung innerhalb von Excel kann sicherlich nur sehr begrenzte Beschleunigung bringen. Leichtlauföl und Superplus machen aus einem Polo halt keinen Porsche.
Excel ist ein Werkzeug für Büroarbeiten und nicht für performante Rechenleistung bei großen Datenmengen gedacht. Nicht umsonst waren frühere Excelversionen auch gar nicht in der Lage, größere Datenmengen zu verwalten.
Vielleicht ist der Kauf einer Espressomaschine für die Wartezeit die günstige Lösung für Budget und Nerven.
Ciao, Allesquatsch