Hallo!
Also ich habe ein Programm geschrieben dass mir erst eine JSON-Datei aus dem Internet holt. Das passiert 838 mal. Danach hol ich mir mit der MediaWiki API aus einem Wiki eine Seite pro Eintrag (Es sind momentan genau 41882 Einträge) und lese aus dem XML ein Attribut aus. Das schreibe ich erstmal in ein NSDictionary und dann in eine csv. Ich schreib das NSDictionary sobald es vollständig ist, schreib ich es in die Datei und release das sofort wieder, wenn ich neue Werte eintrage.
Hört sich erstmal nach ca 20 Zeilen an aber da die JSON-Datei voller Müll ist und so unnützen Sachen wie "\/" und viele Werte, die ich nicht brauche (Die ganze Sache ist mal wieder ein Fall von schlechter Umsetzung... Da muss man erst 40k Einträge parsen damit man die API ordentlich benutzen kann) und die müssen raus. Dann kommen da noch Werte zu die komische Sonderzeichen haben. û, ó und auch mal + und % die man erstmal in diese coolen %irgentwas-Werte umwandeln muss.
Aber genug geheult...
Der RAM-Verbrauch steigt einfach ins Unendliche und ich weiß nicht warum. Es gibt laut Instruments keine Zombies und es wird auch nicht immer mit jedem loop eine Variable erweitert. Ich lasse das Programm jetzt 28 Minuten laufen und bin bei 138MB Live Bytes, 734MB Overall Bytes und 180MB in der Aktivitätsanzeige. Das ist erst mal nicht schlimm aber bei 40k Einträgen dauert das 7 Stunden (der Webserver ist ein bisschen langsam) und irgentwie sollte das ja auch nicht passieren. Selbst wenn man bei 8 GB RAM eigentlich keine großen Probleme auf dauer bekommen sollte, nervt da Schon...
Ich habe keine Ahnung wo der Fehler ist. Der Code ist unübersichtlich und eigentlich nur Quick and Dirty weil ich das Programm nicht so oft brauchen werde.
Quellcode
Ich kann den Quellcode leider nicht einfach so posten. Das würde das 10000 Zeichen Limit sprengen.
MfG Asyx
Also ich habe ein Programm geschrieben dass mir erst eine JSON-Datei aus dem Internet holt. Das passiert 838 mal. Danach hol ich mir mit der MediaWiki API aus einem Wiki eine Seite pro Eintrag (Es sind momentan genau 41882 Einträge) und lese aus dem XML ein Attribut aus. Das schreibe ich erstmal in ein NSDictionary und dann in eine csv. Ich schreib das NSDictionary sobald es vollständig ist, schreib ich es in die Datei und release das sofort wieder, wenn ich neue Werte eintrage.
Hört sich erstmal nach ca 20 Zeilen an aber da die JSON-Datei voller Müll ist und so unnützen Sachen wie "\/" und viele Werte, die ich nicht brauche (Die ganze Sache ist mal wieder ein Fall von schlechter Umsetzung... Da muss man erst 40k Einträge parsen damit man die API ordentlich benutzen kann) und die müssen raus. Dann kommen da noch Werte zu die komische Sonderzeichen haben. û, ó und auch mal + und % die man erstmal in diese coolen %irgentwas-Werte umwandeln muss.
Aber genug geheult...
Der RAM-Verbrauch steigt einfach ins Unendliche und ich weiß nicht warum. Es gibt laut Instruments keine Zombies und es wird auch nicht immer mit jedem loop eine Variable erweitert. Ich lasse das Programm jetzt 28 Minuten laufen und bin bei 138MB Live Bytes, 734MB Overall Bytes und 180MB in der Aktivitätsanzeige. Das ist erst mal nicht schlimm aber bei 40k Einträgen dauert das 7 Stunden (der Webserver ist ein bisschen langsam) und irgentwie sollte das ja auch nicht passieren. Selbst wenn man bei 8 GB RAM eigentlich keine großen Probleme auf dauer bekommen sollte, nervt da Schon...
Ich habe keine Ahnung wo der Fehler ist. Der Code ist unübersichtlich und eigentlich nur Quick and Dirty weil ich das Programm nicht so oft brauchen werde.
Quellcode
Ich kann den Quellcode leider nicht einfach so posten. Das würde das 10000 Zeichen Limit sprengen.
MfG Asyx