Effizientes Lesen von einem File
-
Hallo Zusammen,
wie der Titel schon sagt suche ich nach einer effizienten Lösung um von einem Textfile zu lesen. Das File könnte zum Beispiel so aussehen:
// Infos Seriennummer: 01234 Version: 1.0 Typ: A1 // Eingänge 1,3 // Ausgänge 2,4 // Funktionen und zugehörige Pins und Beschreibung 0x00 2 klapan_1 0x01 3 klapan_2 0x11 4 klapan_3 0x10 1 klapan_4
Ich suche nun nach einer möglichst einfachen und effizienten Lösung um die benötigten Informationen auszulesen. Irgendwelche Vorschläge?
Danke und Gruss,
finalcu
-
Zeilenweise einlesen
Edit: evtl. zuerst die ersten Zeichen auf eine bestimmte Art von Zeile überprüfen.
sscanf() bzw. Konsorten in deiner Programmiersprache verwendenMfG SideWinder
-
@finalcu:
Du verwechselst Lesen hier mit Parsen
-
Und zu 95% brauch das lesen von der Platte viel länger als das parsen, aber wahrscheinlich gehts nicht um Effizienz, sondern nur um irgendeine Lösung
-
finalcu schrieb:
Hallo Zusammen,
wie der Titel schon sagt suche ich nach einer effizienten Lösung um von einem Textfile zu lesen. Das File könnte zum Beispiel so aussehen:
// Infos Seriennummer: 01234 Version: 1.0 Typ: A1 // Eingänge 1,3 // Ausgänge 2,4 // Funktionen und zugehörige Pins und Beschreibung 0x00 2 klapan_1 0x01 3 klapan_2 0x11 4 klapan_3 0x10 1 klapan_4
Ich suche nun nach einer möglichst einfachen und effizienten Lösung um die benötigten Informationen auszulesen. Irgendwelche Vorschläge?
Danke und Gruss,
finalcuZunächst einmal solltest Du mal verraten, welche Programmiersprache du verwenden möchtest.
Und dann solltest Du Dich entscheiden. Einfache Lösungen sind in der Regel weniger effizient.
Eine einfache Lösung ist sicher, Zeilenweise zu lesen und dann einen regulären Ausdruck drüber zu schicken. Und wenn Du einen gepufferten input-stream wie in C++ der std::ifstream verwendest, dann ist das auch einigermassen effizient.
Willst Du es richtig effizient, dann solltest Du statt des regulären Ausdrucks einen richtigen Parser schreiben.
Und noch was @additionalator: wie kommst Du auf die 95%? Das mag bei Deinem System so sein. Es kommt halt sehr darauf an, wo die Daten liegen. Liegen Sie auf einer Lochkarte oder in einer RAM-Disk welcher Art auch immer. Wie schnell ist die Platte? Und wie sieht es mit dem Cache des Betriebssystems aus? Wenn die Daten dort bereits vor liegen, dann ist es sogar egal, wie schnell die Platte ist.
-
Hallo,
ich hänge mich mal an diesem Thread. Hierzu müsste man den Thread-Titel umschreiben. "Effizientes Lesen und Schreiben einer File"
Aus persönlichen Gründen (ohne einen speziellen Anwendungsfall) interessiert mich, wie ein asynchrones Schreiben und Lesen funktioniert. Als Sprache währen C, C++ oder ähnliches (z.B. Java) von Interesse.
Mehrere Thread's greifen auf die Datei lesend oder schreibend zu. Wie implementiert man einen derartigen Stream und wie, was muss dabei synchronizierd werden.
Sind derartige Szenarios sinnvoll oder bremst man die handelsüblichen Platten aus?
Was sollte asyn. Erfolgen und was nicht?Gruß,
Thomas
-
Siassei schrieb:
Hallo,
ich hänge mich mal an diesem Thread. Hierzu müsste man den Thread-Titel umschreiben. "Effizientes Lesen und Schreiben einer File"
Aus persönlichen Gründen (ohne einen speziellen Anwendungsfall) interessiert mich, wie ein asynchrones Schreiben und Lesen funktioniert. Als Sprache währen C, C++ oder ähnliches (z.B. Java) von Interesse.
Mehrere Thread's greifen auf die Datei lesend oder schreibend zu. Wie implementiert man einen derartigen Stream und wie, was muss dabei synchronizierd werden.
Sind derartige Szenarios sinnvoll oder bremst man die handelsüblichen Platten aus?
Was sollte asyn. Erfolgen und was nicht?Gruß,
ThomasDeine Frage hat absolut nichts mit der des OP zu tun, mach doch bitte einen eigenen Thread auf.
-
tntnet schrieb:
Und noch was @additionalator: wie kommst Du auf die 95%? Das mag bei Deinem System so sein. Es kommt halt sehr darauf an, wo die Daten liegen. Liegen Sie auf einer Lochkarte oder in einer RAM-Disk welcher Art auch immer. Wie schnell ist die Platte? Und wie sieht es mit dem Cache des Betriebssystems aus? Wenn die Daten dort bereits vor liegen, dann ist es sogar egal, wie schnell die Platte ist.
Na denk doch mal ein bisschen nach. Wie groß ist die Chance, dass einer der noch nicht einmal die Programmiersprache angibt eine RAM-Disk oder Lochkarte hat? Der will doch wahrscheinlich nur nen fertigen Code für sein Problem.
-
additionalator schrieb:
tntnet schrieb:
Und noch was @additionalator: wie kommst Du auf die 95%? Das mag bei Deinem System so sein. Es kommt halt sehr darauf an, wo die Daten liegen. Liegen Sie auf einer Lochkarte oder in einer RAM-Disk welcher Art auch immer. Wie schnell ist die Platte? Und wie sieht es mit dem Cache des Betriebssystems aus? Wenn die Daten dort bereits vor liegen, dann ist es sogar egal, wie schnell die Platte ist.
Na denk doch mal ein bisschen nach. Wie groß ist die Chance, dass einer der noch nicht einmal die Programmiersprache angibt eine RAM-Disk oder Lochkarte hat? Der will doch wahrscheinlich nur nen fertigen Code für sein Problem.
Ok ich habe noch mal ein bisschen nachgedacht. Und ich habe sogar nachgemessen: es sind 94,7%