RAM vs CPU

Hallo,

mir tut sich greade eine Frage auf.

Sollte man den RAM ( evtl mit Virtuellem ) beforzugen und CPU-Zeit sparen.
Oder, eher den RAM schonen und die CPU zum Qualmen bringen.

Das erste wohl eher wenn geschwingikeit gefragt ist und
Zweiteres bei Resurcen-Mangel.

Was Denkt Ihr ???

Inne

Moien

Was Denkt Ihr ???

Es hängt von der CPU und der RAM-Grösse ab… Reden wir über PC oder über Microcontroller ?

Aber eines gilt immer: niemals den RAM restlos aufbrauchen. Also niemals den swap bewust nutzen. swap ist böse.

cu

Reden wir über PC oder über Microcontroller ?

über PC…
Ich benutze auch das erste Beispiel aber es geht mir ums Prinzip,
Und auch in berücksichtung der Späteren Datei-Größe die ich im ersten (Haupt) Eintrag vergessen habe zu erwähnen.

Mal ein Code beispiel in Worten:

1|Zeichenkettenlänge ermitteln und in Var. Speichern (Zum Abfragen bereithalten);
2|Do-While Schleife
3|{
4| … (Weitere Aktionen) …
5| Zeichenkettenlänge aus Var. Abfragen und Verarbeiten;
6| … (Weitere Aktionen) …
7|}

Oder:

1|Do-While Schleife
2|{
3| … (Weitere Aktionen) …
4| Zeichenkettenlänge ermitteln und Verarbeiten;
5| … (Weitere Aktionen) …
6|}

Hallo Inne,

1|Zeichenkettenlänge ermitteln und in Var. Speichern (Zum
Abfragen bereithalten);
2|Do-While Schleife
3|{
4| … (Weitere Aktionen) …
5| Zeichenkettenlänge aus Var. Abfragen und Verarbeiten;
6| … (Weitere Aktionen) …
7|}

Oder:

1|Do-While Schleife
2|{
3| … (Weitere Aktionen) …
4| Zeichenkettenlänge ermitteln und Verarbeiten;
5| … (Weitere Aktionen) …
6|}

„Speicher“ „läuft“ mit maximal 200 MHz,
ein moderner Prozessor läuft mit
mindestens 2000 MHz.

Ausserdem passieren alle Berechnungen im
Prozessor, die Daten müssen also erstmal vom
Speicher über den Bus in den Prozessor.

Rechne damit, dass bei modernen PC’s
die effektive (resultierende) „Speicher-
geschwindigkeit“ um den Fakor Tausend
(10^3) niedriger ist als die „Prozessor-
geschwindigkeit“. Als Faustregel.

Es kann, wenn Du Glück hast, auch
„nur“ um den Faktor 10 oder 100
langsamer sein. Das kommt ganz
darauf an.

Stichworte: ‚L1 cache‘, ‚L2 cache‘,
‚Speicherlatenzzeit‘, ‚Speichertransferrate‘,
‚Busfrequenz‘ usw.

Grüße

CMБ

1|Zeichenkettenlänge ermitteln und in Var. Speichern (Zum
Abfragen bereithalten);
2|Do-While Schleife
3|{
4| … (Weitere Aktionen) …
5| Zeichenkettenlänge aus Var. Abfragen und Verarbeiten;
6| … (Weitere Aktionen) …
7|}

Oder:

1|Do-While Schleife
2|{
3| … (Weitere Aktionen) …
4| Zeichenkettenlänge ermitteln und Verarbeiten;
5| … (Weitere Aktionen) …
6|}

Hallo Inne
Das erste Beispiel ist deutlich besser. Diese geschachtelten Funktionen brauchen länger. Solange die Zeichenkette in der Länge nicht geändert wird, spricht nichts dagegen, die Länge in einer Variablen zu speichern.
Aber beide Methoden haben nicht viel mit Speicherverbrauch zu tun. Der Hauptspeicherverbrauch liegt mit Sicherheit in der Zeichenkette. Eine Variable für die Stringlänge braucht maximal nur 4-Byte, je nach System.
MfG
Matthias

Moien

über PC…

Also i.A. über Geräte mit mehr als 256 MB RAM. D.h. auf 4 byte kommt es nicht an.

Ich benutze auch das erste Beispiel aber es geht mir ums
Prinzip,

Zu deinem Beispiel: man speichert die Länge einer Zeichenkette vor dem verarbeiten immer in einer Variable. Es ist schneller, egal über welche Art von CPU wir reden.

Versuch nicht solche Details zu optimieren wenn anderswo noch grosse Einsparungen möglich sind. Erst wenn du alles aus dem Rechner rausgeprügelt hast kannst du dir über int-Variablen Sorgen machen.

Und auch in berücksichtung der Späteren Datei-Größe die ich im
ersten (Haupt) Eintrag vergessen habe zu erwähnen.

Wird die Datei auf einen Schlag eingelesen ? Oder suchst du in dem Ding rum ? Gehts um KB oder MB ?

cu

Hallo Inne,

Aus deineer anderen ANtwort entnehme ich, dass du PCs sprichst und nicht von MicroControllern.

mir tut sich greade eine Frage auf.

Sollte man den RAM ( evtl mit Virtuellem ) beforzugen und
CPU-Zeit sparen.
Oder, eher den RAM schonen und die CPU zum Qualmen bringen.

Das erste wohl eher wenn geschwingikeit gefragt ist und
Zweiteres bei Resurcen-Mangel.

Da gibt es keine Allgemeine Antwort.
Es kann heutzutage schneller sein, etwas in einer Schleiffe zu programmieren als das selbe linear zu erledigen. „Schuld“ daran ist der Cache. Wenn die ganze Schleiffe in den Cache passt wird sie schneller abgearbeitet als ein lineares Programm. Ohne Cache ist das lineare Programm schneller.

Grundsätzlich ist das RAM schneller als die Festplatte, da liegt schon so ein Faktor 1’000 bis 10’000 drin.

Allerdings geht aus deiner Frage nicht hervor ob du dich auf das Programm oder die Daten beziehst, aber sowohl als auch kommt es halt darauf an, wie oft darauf zugegriffen wird.

MfG Peter(TOO)

Gehts um KB oder MB ?

„egal“ es ging um die Größe der compelierten Datei.