Frage von 11Josef11, 41

Ist es effizienter in Java eine Datei aufzurufen, oder alles im Zwischenspeicher zu speichern?

Ist es Sinnvoller, mindestens jede Sekunde dieselbe Datei aufzurufen, oder dauerhaft min. 2000 Strings in der Zwischenablage in einer ArrayList zu speichern.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von ThomasJNewton, 17

Der verbissenen Kampf um jedes Byte RAM ist ja schon etwas länger aus der Mode.

Andererseits habe ich heute Windows XP neu installiert bzw. damit angefangen, bis dann der Rechner wohl entgültig die Grätsche gemacht hat.
Frisch nach der Installation waren nach dem Start 60 MB RAM belegt.
Vorher oder auf meinem Zweitrechner, den ich jetzt verwende, waren/sind es 600 bis 750 MB.
Wohlgemerkt, ohne dass ich auch nur ein Programm gestartet hätte, außer dem Taskmanager.

Wenn man dann ein paar Stunden im Internet surft und nicht alle Tabs sofort wieder schließt, nebenbei noch einen Film zeitversetzt sieht, ist man irgendwann mal an der Grenze, wo das Swappen beginnt.

Also ist es vielleicht kleine schlechte Idee, ein wenig über einen Kompromiss nachzudenken.
Ich kenne ja die Länge deiner Strings nicht, und es bleibt ja auch noch die Frage, ob und vieviel Verwaltungsoverhead Java da noch zupackt.

Es kann ja durchaus sein, dass du von den 2000 Strings die wenigsten wirklich brauchst.
Dann lies sie bei Bedarf und speichere die benötigten im RAM:
Oder du brauchst alle, aber kennst die Reihenfolge. Dann lies alle 60 Sekunden 60 ein und speichere sie.

Oder anders. Das ist ja auch nicht unbedingt ein Umfang, worüber man sich tagelang den Kopf zermartert. Man solte halt nur ein wenig darauf achten.
Und bei alldem bin ich natürlich davon ausgegangen, dass du gezielt auf die Strings zugreifst. Das sollte auch in Java möglich sein - und natürlich auch deinem Konzept gemäß..

Kommentar von 11Josef11 ,

Ich habe nun einen Kompromiss. Ich habe 2 Dateien. Eine wird dauernd aufgerufen und die andere nur einmal am Programmstart. Ich denke, ich löse es dann auch mit einem Integer Array, da ich mir dann eigentlich einen Arbeitsschritt spare. (Ich brauche eine x y z Koordinate). Daher speichere ich mir nun die 2000 Koordinaten im Arbeitsspeicher und alle anderen Informationen in meiner Datei. Danke für deine Antwort. 

P.S.: Dafür braucht Win. XP Ewigkeiten zum hoch fahren. 

Antwort
von ceevee, 26

Für sowas ist der Arbeitsspeicher effizienter. Wenn man mal davon ausgeht, dass wir 3000 Strings haben, die je 255 Zeichen lang sind und UTF-32 (also 4 Byte / Zeichen) lang sind, dann belegt das Array gut 3 MB Arbeitsspeicher. Soviel wirst du jawohl noch über haben. :)

Antwort
von PerfectMuffin, 16

CPU VS RAM

Wenn's aber jede Sekunde passiert und wenn man betrachtet, wie Dateien gespeichert und aufgerufen werden ist es in jeder Hinsicht besser, zu speichern.

Kommentar von Reyha24 ,

CPU? Wieso nicht HDD vs RAM?

Kommentar von PerfectMuffin ,

Hast Recht, die Festplatte ist hier eher limitierender Faktor, als der Prozessor.

Eigentlich meinte ich "Speicher VS Geschwindigkeit", denn darauf laufen alle Kompromisse in der Programmierung hinaus.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten