AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign I/O- und CPU-Auslastung beim Lesen und Parsen von Dateien gering halten
Thema durchsuchen
Ansicht
Themen-Optionen

I/O- und CPU-Auslastung beim Lesen und Parsen von Dateien gering halten

Ein Thema von Strict · begonnen am 18. Apr 2020 · letzter Beitrag vom 18. Apr 2020
Antwort Antwort
Strict

Registriert seit: 25. Mär 2020
47 Beiträge
 
#1

I/O- und CPU-Auslastung beim Lesen und Parsen von Dateien gering halten

  Alt 18. Apr 2020, 17:28
Mittlerweile habe ich fast alles umgestellt, sodass ich bald meine PO-Dateien erzeugen kann. Das war mehr Arbeit als gedacht, wenn man eine saubere und valide PO-Datei haben möchte. Der Rat von Uwe Raabe, das Rad nicht neu zu erfinden, war nett gemeint. Aber XML ist nicht meine Welt.

Ich überlege außerdem eine kleine Klasse zu schreiben, die mir die PO-Datei auslesen kann. Etwas Fertiges möchte ich nicht verwenden. Das hat unter anderem Lizenzgründe.

Insgesamt erzeuge ich pro Sprache ein paar Sprachdateien. Grund dafür ist, dass ich es den Übersetzern so bequem und einfach wie möglich machen möchte, die Dateien zu übersetzen. Alles einfach in eine Datei quetschen, dann auch noch thematisch unpassende Dinge zusammen, ist nicht, was ich möchte. Insgesamt werden alle PO-Dateien zusammen grob über den Daumen geschätzt 1000 Einträge haben.

Ich überlege, ob es nicht sinnvoll wäre die Übersetzungen später direkt aus den PO-Dateien zu laden und die fest-verdrahteten Übersetzungen rauszuschmeißen.
Wie baut man so eine Klasse am besten auf, sodass ich auf jede msgid zugreifen kann, ohn den Datenträger auszulasten? Wie parst man die am sinnvollsten?

Geändert von Strict (19. Apr 2020 um 01:43 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: I/O- und CPU-Auslastung beim Lesen von Dateien gering halten

  Alt 18. Apr 2020, 18:48
Zitat:
Der Rat von Uwe Raabe, das Rad nicht neu zu erfinden, war nett gemeint. (...) Etwas Fertiges möchte ich nicht verwenden.
Danke dass du das gleich vorweg nimmst. Das erspart hoffentlich eine Menge (hoffnungslose) Diskussion.


Aber ich verstehe das Problem nicht. Glaubst du wirklich du würdest einen "Datenträger auslasten" mit einer .po-Datei mit ein paar tausend Einträgen? Und wie oft stellst du typischerweise mittendrin zur Laufzeit die Sprache um?


Ich kann jetzt nur von unseren Anwendungen sprechen, aber hier war uns dxGetText für das Handling der .po/.mo-Dateien in Delphi gut genug. Und beim Umstellen der Sprache/Region geht sicher mehr Zeit drauf um, beispielsweise, Graphen nun in °F statt °C neu zu malen als ein paar Kilobyte Strings von der Platte zu laden.

PS: Ich kenne es jetzt nur von dxGetText, aber der verwendet zur Laufzeit auch nicht die .po-Dateien, sondern die "kompilierten" .mo-Dateien die viel kleiner sind. Mit dem Format habe ich mich nie befasst da ich keine Probleme hatte etwas fertiges zu verwenden.
Siehe Punkt 10 unter https://www.gnu.org/software/gettext...ode/index.html

PPS:
Zitat:
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%
Donald Knuth, 1974
  Mit Zitat antworten Zitat
Strict

Registriert seit: 25. Mär 2020
47 Beiträge
 
#3

AW: I/O- und CPU-Auslastung beim Lesen von Dateien gering halten

  Alt 18. Apr 2020, 18:52
Zitat:
Aber ich verstehe das Problem nicht. Glaubst du wirklich du würdest einen "Datenträger auslasten" mit einer .po-Datei mit ein paar tausend Einträgen?
Das Laden der Datei hat absolut keinen Aufwand. Ich frage mich nur, wie stressig das Parsen wird.

Eine meiner PO-Dateien ist 46 KB klein. Die MO-Datei nur 320 Bytes. Kann das sein?

Dein Zitat ist aufschlussreich. Ich denke mal darüber nach.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz