Mit großen Datenmengen umgehen
-
Hallo ihr,
ich habe ein Problem. Ich soll von einem Server eine laaange Liste herunterladen und muss diese dann nachher im Speicher durchparsen. Ich bekomme die Liste aber immer nur in kleineren Byte-Blöcken. Wie bekomme ich die ganze Liste am besten in einen Speicherbereich um diese dann zu parsen? Habe an vector gedacht, aber der müsste dann ziemlich oft Speicher nachfordern. Ich weiß allerdings auch nicht wie groß die Liste ist bevor ich sie heruntergezogen habe. Ist echt ein kniffliges Problem. Hoffe mir kann jemand dabei helfen?
Mfg,
Gnuru
-
schon mal überlegt, das ganze in einer datei zwischenzuspeichern? wenn die liste nicht mehr als 20 mb hat, würd ich alternativ erstmal eine liste/queue von std::strings für die einzelnen empfangenen pakete, danach die pakete einzeln durchparsen, und z.b. in eine liste tun. list und queue haben weniger overhead als vektor. kannst auch selber schnell implementieren, um geringsten aufwand sicherzustellen. so groß wird die liste schon nicht sein, dass sie nicht in den speicher passt
-
Aber dann ist das parsen doch schwerer und langsamer, weil ich ja nur immer einzelne Bruchstücke in dem Container habe.
-
Gnuru schrieb:
Aber dann ist das parsen doch schwerer und langsamer, weil ich ja nur immer einzelne Bruchstücke in dem Container habe.
Am Ende kopierst du die Daten dann in eine dir passende Form.
Am Besten waere es sowieso, wenn du von vornherein wuesstest wie gross die Datei ist...