2016-07-23 20 views
1

Ich habe ein Echtzeitprojekt, das in jeder Zeile einer Textdatei einen schweren Prozess hat. Was schlagen Sie vor, um diesen Text zu speichern?Ist das Speichern einer großen Datei im char-Array korrekt?

was ich jetzt mache, ist die gesamte Textdatei in einer Char * -Variable zu speichern und dann mit dieser Variablen zu arbeiten, anstatt der Datei, mein Problem ist, wenn der Text größer wird, was kann ich tun? und es gibt die Möglichkeit, die Begrenzung der Char-Array zu erreichen, und Speicher-Heap wird größer werden :(

Eine andere Lösung, die ich im Hinterkopf bin, ist, dass jedes Mal, wenn ich diese bestimmte Zeile des Textes, gehe ich durch die Datei und lese es und arbeite damit, aber diese Lösung macht mein Programm so langsam, und wie ich bereits erwähnt habe, ist die Zeit wichtig für mich, was machst du da?

Gibt es einen anderen Weg, der schnell ist genug, dass ich es verwenden kann?

+0

Sie haben nicht erwähnt, welches RTOS verwendet wird (oder Ihr "Echtzeit" ist nur "sollte schnell sein"). Es könnte Speicherabbilddateien haben. – KIIV

+0

@ KIIV es sollte schnell Art sein :) –

+1

Es hängt wirklich von der Situation ab, oder was die Datei ist. Wenn Sie die Leistung wirklich unterstützen möchten und die Situation es zulässt, würde ich vorschlagen, die Datei im Voraus in eine schnellere interne Datenstruktur zu zerlegen, anstatt als Rohtext. Wenn die Datei so groß ist, dass der Speicher eine Einschränkung darstellt, würde ich vorschlagen, sie in einer Datenbank mit geeigneten Indizes zu analysieren und in der Datenbank zu arbeiten. Wie auch immer, ich würde definitiv vorschlagen, im Moment entweder einen 'std :: vector ' oder 'std :: string' anstelle von' char * 'zu verwenden, wenn du kannst. Es wird wahrscheinlich Ihr Leben ein wenig leichter in den kurzen und langen Läufen machen. – Taywee

Antwort

0

Wenn es wirklich groß ist, warum Sie es in den Arbeitsspeicher speichern möchten? Verwenden Sie Speicherabbilddatei

+0

es ist nicht groß zu der Zeit, aber ich habe Angst, es wird größer und ist speicherabgebildete Datei schneller als variable Zuordnung? –

+3

Ich würde Code nur umschreiben, wenn es notwendig ist. Wenn Sie jetzt die gesamte Datei im RAM speichern, belassen Sie sie so wie sie ist. Was meinen Sie? Könnten Sie einen Anwendungsfall bereitstellen? – stryku