C: Textdatei>250MB in RAM schreiben

  • Es gibt mit C ja mehrere Wege eine Datei in den RAM zu schreiben. Als da wäre fread, fgets, fgetc u.s.w. Aber was ist bei sehr grossen Dateien (250MB - 1GB) am schnellsten? Und gibt es eventuell Limits, den Stack betreffend?

    Ich habe mir gedacht, man könnte ja z.B. die Dateigrösse ermitteln und dann den benötigten Speicher anfordern:

    memory=malloc(fileSize);

    Und dann so:

    for(cnt=0; cnt<fileSize); cnt++) memory[cnt]=fgetc(file);

    Das ist meiner Meinung nach die simpelste Methode, die Daten in den RAM zu schaufeln. Aber ist es auch die schnellste?

  • Also ich habe das jetzt so gelöst:

    read(fileObject->fileDescriptor, datas, dataSize);

    Damit sind z.B. 260MB in etwa 6 Sekunden in den RAM geladen. Sollte schnell genug sein :)

    Habe leider im Moment nicht die Zeit noch eine andere Variante zu testen. Wenn jemand was schnelleres weiss, dann bitte bescheid sagen.

    Den Stack bzw. Heap betreffend gibt es auch keine Probleme. Allerdings warnt valgrind:

    Warning: set address range perms: large range 268251706

    Ich hoffe mal, solange das System 2GB oder mehr RAM hat sollte das Kein Problem darstellen. Oder hat hier jemand andere Erfahrungen gemacht?

  • ich hab zwar keinen plan von c++, aber ich würde erstma den RAM auslesen in punkto grösse.... klar man sollte heutzutage von 1 bis 4 GB ausgehen können, aber sicher ist sicher