Gude allerseits,
um mein Problem erklären zu können, folgt erstmal die Beschreibung meines derzeitigen Projekts.
Einigen unter euch wird möglicherweise die Seite "mtaupload.com" etwas sagen. Diese Seite ist langsam des Grauens und macht mich wahnsinnig. Deshalb möchte ich eine eigene Lösung implementieren, wofür ich eine Datenbank brauche.
Das Projekt, mit dem ich diese Datenbank anfertige, möchte ich der Community zur Verfügung stellen.
Dort habe ich mir jetzt etwa 6700 Maps per Script heruntergeladen (natürlich mit Einverständnis der Administration).
Da es ein Haufen an Maps ist und man da sehr schnell den Faden verliert, habe ich natürlich auch ein Programm geschrieben, welches das Archiv nach der meta.xml durchsucht und anschließend den Mapnamen + den Pfad in eine .json-Datei schreibt.
Hier kommen wir zum Problem: Solche intensiven IO-Zugriffe sorgen für ordentlich Lag, weshalb ich das Programm auf Multithreading umgeschrieben habe. Der 9:30 Minuten Prozess dauert nun nurnoch knapp 2 Minuten, was wirklich deutlich schneller ist.
Nur gibt es ein Problem: Durch die Erweiterung auf MT kommt das Problem hinzu, dass ich ~6700 Future-Objekte beherberge.
Die Überprüfung der Objekte dauert so lange, dass in dieser Zeit keine Status-Updates in der Konsole folgen können.
Hat jemand eine Idee was ich tun kann, um den Code in ArchiveParser::CheckResults() deutlich zu beschleunigen?
Ich bin über jede Hilfe glücklich.
Github: https://github.com/Andosius/MapListGenerator
Problemzeile: https://github.com/Andosius/Ma…5161fa18/src/main.cpp#L22