Mapping von Dateien in den RAM mit verzögertem Laden (in C++)

Die Speicherung von Daten in einem nicht-menschenlesbaren Binärformat kann nützlich sein, da sie viel weniger Platz beanspruchen und das Parsen einfacher und schneller ist. Es scheint viel praktischer, auf eine solche Datei wie auf einen Vektor und nicht wie auf einen File-Stream zuzugreifen. Die Stream-Funktionalität des regulären Dateizugriffs in C++ ist nützlich für das Parsen von Dateien, aber wenn die Dateien binäre Daten enthalten, ist der einzige Vorteil gegenüber dem alten C-Stil mit getchar(), dass RAII (resource acquisition is initialization) zum Einsatz kommt. Die Speicherung von Daten in einem nicht-menschenlesbaren Binärformat kann nützlich sein, da sie viel weniger Platz beanspruchen und das Parsen einfacher und schneller ist. Es erscheint viel praktischer, auf eine solche Datei wie auf einen Vektor zuzugreifen. Deshalb beschloss ich, eine kleine Bibliothek dafür zu entwickeln. Aus Gründen, die Teil einer Geheimhaltungsvereinbarung sind, wurde sie mit diesen zusätzlichen, nicht-funktionalen Anforderungen konzipiert: Die Bytes am Anfang der Datei werden eher benötigt als die am Ende und die am Ende nur, wenn die am Anfang benötigt werden. In den meisten Fällen – falls in die Datei geschrieben wird – wird in sie häufig und ans Ende geschrieben, sonst überhaupt nicht. Die Dateien sind nicht groß genug, um den RAM … Mapping von Dateien in den RAM mit verzögertem Laden (in C++) weiterlesen