Im Grunde ist alles kein akutes Problem sondern eher eine Optimierung eines schon lang funktionierenden Systems. Neben der Dateigröße stört mich aber vor allem eher die Einlese-Zeit aber wie ja bereits festgestellt, ist meine Art mit dem parsen Stringzeile-to-Struct, Zeile per Zeile das wahrscheinlich langsamste was nur geht, damals war ich ein noch schlechterer Coder als heute
Ist eh lustig wenn man sich seine eigenen Codes nach 2 Jahren anschaut und denkt ach du sch...e, 2 Jahre später wieder das Selbe mit den Codes von heute... 
Was Plattenkompression angeht hatte ich mir das gespeichert:
https://en.wikipedia.org/wiki/Btrfs
Das Thema guck ich mir auch mal an.
Alleine nur das sollte schon extrem viel bringen.
Wie richtig geschrieben wurde, ein Bottleneck ist auch echt die Auslesegeschwindigkeit von HDDs. Insofern bin ich fast sicher, dass Kompression den Speed verbessert weil komprimiert mehr Daten schneller im RAM sind selbst wenn sie dort noch dekomprimiert werden müssen. Bei Kompression ist zstd richtig fein (merci für den Tipp an @Bagbag). Auch da hatte ich mal was probiert, ist denke ich auch kein so großes Ding, sah zumindest nicht so kompliziert aus.
Hier war die umwerfend einstimmige Meinung Datenbank. Allerdings wenn man mal so liest bei ähnlichen Themen im Netz wird meist gesagt, dass Flat File schneller ist (it depends
)
https://stackoverflow.com/questions...om-files-or-a-database-server/2148081#2148081
https://stackoverflow.com/questions/2356851/database-vs-flat-files
Aber wie immer "it depends" es ist natürlich klar, dass je nach Zugriffsverhalten pro/contra gewichtet ist. Bei mir werden ja einfach Daten von Position x bis Position Y am Stück in RAM übertragen nix mehr. Es geht nicht ums permanente Finden von unterschiedlichen Stellen, nur einmal Stelle finden und dann ab dort in RAM kopieren. Hat alles seine Daseinsberechtigung für den jeweiligen Usecase, nachdem ich mich jetzt etwas mehr damit beschäftigt habe finde ich immer noch, dass die Notwendigkeit/Stärken einer DB jetzt nicht unbedingt in meinem Anwendungsfall so klar ausgespielt werden. Auf der anderen Seite kann man die soliden Mechanismen einer DB natürlich später vielleicht mal für andere Projekte gebrauchen.
MongoDB hat inzwischen zstd was sehr cool ist. Allerdings ist ein Influxdb (thx @cloudman) natürlich für den Anwendungsfall sicherlich viel besser/schneller. Mongo wiederum wäre eben auch ggf für zukünftige Projekte cool und irgendwie universeller. Und SQLite ist eh immer im Hinterkopf.
Ich werde am Ende wohl beides ausprobieren, also das Ganze einmal als Datenbank was mich langfristig mal reizt aber auch mein "flat files" Ansatz den ich sicherlich schneller fertig habe weil nur binär+zstd ins aktuelle Geschehen zwischengeschaltet werden muss. Habe aktuell nicht viel Zeit aber wenn ich was fertig hab werde ich hier berichten.


Was Plattenkompression angeht hatte ich mir das gespeichert:
https://en.wikipedia.org/wiki/Btrfs
Das Thema guck ich mir auch mal an.
Das ist eigentlich easy und ich denke es verringert die Komplexität weil ich die Strings nicht aufbröseln muss, hatte schon während dem Thema hier einen kleinen Entwurf um das in Blöcken zu machen:NemesisFS schrieb:Die Daten selbst binär zu schreiben kostet dich eine Menge Arbeit und das erkaufst du dir durch Komplexität.
C++:
#pragma pack(push,1) // paranoia exaktes fitting
struct struct_Temps
{
unsigned int TS;
float T;
float T2;
// ggf weitere
}
#pragma pack(pop)
const ArrSize = 1000000;
struct_Temps Temps[ArrSize];
und dann einfach:
myfile.write((char *) &Temps, sizeof(Temps));
myfile.read((char *) &Temps, sizeof(Temps));
Alleine nur das sollte schon extrem viel bringen.
Wie richtig geschrieben wurde, ein Bottleneck ist auch echt die Auslesegeschwindigkeit von HDDs. Insofern bin ich fast sicher, dass Kompression den Speed verbessert weil komprimiert mehr Daten schneller im RAM sind selbst wenn sie dort noch dekomprimiert werden müssen. Bei Kompression ist zstd richtig fein (merci für den Tipp an @Bagbag). Auch da hatte ich mal was probiert, ist denke ich auch kein so großes Ding, sah zumindest nicht so kompliziert aus.
Hier war die umwerfend einstimmige Meinung Datenbank. Allerdings wenn man mal so liest bei ähnlichen Themen im Netz wird meist gesagt, dass Flat File schneller ist (it depends

https://stackoverflow.com/questions...om-files-or-a-database-server/2148081#2148081
https://stackoverflow.com/questions/2356851/database-vs-flat-files
https://carstengrimm.com/blog/ab-wann-brauch-man-eine-datenbankIn den Meisten Fällen ist die MySQL Datenbank ein Overkill. Diese würde sich von der Performance her bemerkbar machen, wenn die Seite hunderttausende Besucher täglich erreicht
Aber wie immer "it depends" es ist natürlich klar, dass je nach Zugriffsverhalten pro/contra gewichtet ist. Bei mir werden ja einfach Daten von Position x bis Position Y am Stück in RAM übertragen nix mehr. Es geht nicht ums permanente Finden von unterschiedlichen Stellen, nur einmal Stelle finden und dann ab dort in RAM kopieren. Hat alles seine Daseinsberechtigung für den jeweiligen Usecase, nachdem ich mich jetzt etwas mehr damit beschäftigt habe finde ich immer noch, dass die Notwendigkeit/Stärken einer DB jetzt nicht unbedingt in meinem Anwendungsfall so klar ausgespielt werden. Auf der anderen Seite kann man die soliden Mechanismen einer DB natürlich später vielleicht mal für andere Projekte gebrauchen.
MongoDB hat inzwischen zstd was sehr cool ist. Allerdings ist ein Influxdb (thx @cloudman) natürlich für den Anwendungsfall sicherlich viel besser/schneller. Mongo wiederum wäre eben auch ggf für zukünftige Projekte cool und irgendwie universeller. Und SQLite ist eh immer im Hinterkopf.
Ich werde am Ende wohl beides ausprobieren, also das Ganze einmal als Datenbank was mich langfristig mal reizt aber auch mein "flat files" Ansatz den ich sicherlich schneller fertig habe weil nur binär+zstd ins aktuelle Geschehen zwischengeschaltet werden muss. Habe aktuell nicht viel Zeit aber wenn ich was fertig hab werde ich hier berichten.