Was ist ein cache in C++ Programmierung?
Erstens möchte ich sagen, dass ich komme aus einer nicht-informatik-hintergrund & ich habe das erlernen der Sprache C++.
Ich bin nicht in der Lage zu verstehen, was genau ist ein cache?
Es hat verschiedene Bedeutungen in verschiedenen Kontexten.
Ich würde gerne wissen, was aufgerufen werden würde, wie ein cache in einem C++ - Programm?
Zum Beispiel, wenn ich einige int
Daten in eine Datei. Wenn ich lese, es & speichern, in einem int
array, dann würde dies bedeuten, dass ich habe 'Cache' die Daten?
Mir scheint, wie gemeinsame Sinn, die Daten verwenden, da das Lesen aus einer Datei ist immer schlechter als das Lesen aus dem RAM.
Aber ich bin ein wenig verwirrt wegen diese Artikel.
In einem CPU kann es mehrere caches zu beschleunigen, Anweisungen in
Schleifen oder zu speichern Häufig abgerufene Daten. Diese caches sind kleine, aber sehr
schnell. Lesen von Daten aus cache-Speicher ist viel schneller als es zu Lesen
aus dem RAM.
Er sagt, dass das Lesen von Daten aus cache ist viel schneller als aus dem RAM.
Ich dachte, RAM & cache die gleichen waren.
Kann jemand bitte löschen Sie meine Verwirrung?
EDIT: ich bin eine Aktualisierung in Frage, weil vorher war es zu breit.
Meine Verwirrung begann mit diese Antwort. Er sagt
RowData und m_data sind spezifisch für meine Anwendung, aber Sie sind
einfach cache, um Informationen zu einer Zeile in der Datei
Was bedeutet cache in diesem Zusammenhang bedeuten?
"Cache" bedeutet viele verschiedene Dinge in der Computerbranche. Es wäre eine Verschwendung von Zeit Sie zu erklären, wenn wikipedia bereits tut: en.wikipedia.org/wiki/Cache
Im Allgemeinen ist ein cache speichert eine Kopie der Daten, die das langsame zugreifen, dass irgendwo schneller im Zugriff. So ein Speicherort im Netzwerk sein könnte-Cache auf einer lokalen Festplatte, auf einem Datenträger-Datei-Cache im RAM, und RAM kann zwischengespeichert werden, in schneller on-chip-Speicher.
Cache ist ein Allgemeines Konzept, das Wort in vielen zusammenhängen benutzt. Diese definition erwähnt verschiedene Arten - eine CPU-cache, disk-cache, browser-cache. Daher ist ein "cache" ist nicht nur eine spezifische Sache, die verwendet wird, um meine den Teil, der das system beschrieben wird, enthält Daten für eine schnellere Rückholung als die ursprüngliche Quelle. Wenn Sie zitieren der original-text, der das Wort benutzt, jemand könnte Ihnen helfen zu verstehen, was es bedeutet, in diesem Kontext.
Siehe: Was ist "cache-freundlichen code"?
InformationsquelleAutor Cool_Coder | 2013-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jede moderne CPU hat mehrere Ebenen von Caches, die sind in der Regel mit dem Namen Dinge wie L1, L2, L3 oder gar L4. Dies wird als multi-level-cache. Je niedriger die Zahl, desto schneller der cache.
Es ist wichtig, daran zu erinnern, dass die CPU läuft bei Geschwindigkeiten, die deutlich schneller als der Arbeitsspeicher-subsystem. Es braucht die CPU eine kleine Ewigkeit zu warten, dass etwas heruntergeladen werden aus system-Speicher, viele, viele clock-Zyklen vergehen vom Zeitpunkt der Antragstellung, wenn die Daten abgerufen, gesendet über den system-bus, und erhielt von der CPU.
Gibt es kein Programmier-Konstrukt für den Umgang mit caches, aber wenn Ihr code und Daten können ordentlich passen in den L1-cache, dann wird es am schnellsten. Das nächste ist, wenn es die Größe des L2, und so weiter. Wenn der code oder die Daten nicht passen, dann werden Sie von der Gnade der system-Speicher, die um Größenordnungen langsamer.
Dies ist der Grund, warum counter-intuitive Dinge wie unrolling von Schleifen, die schneller sein soll, könnte am Ende wird Sie langsamer, da der code zu groß wird, im cache. Es ist auch, warum der Rasur ein paar bytes aus einer Datenstruktur bezahlen kann riesige Dividenden, obwohl der Speicherbedarf kaum änderungen. Wenn es passt in den cache, es wird schneller sein.
Der einzige Weg zu wissen, wenn Sie haben ein performance-problem im Zusammenhang mit caching ist der benchmark sehr sorgfältig. Denken Sie daran jede Prozessor-Art hat unterschiedliche Mengen von cache, so was könnte gut funktionieren auf deine i7 CPU könnte relativ schrecklich auf einem i5.
Es ist nur in extrem performancekritische Anwendungen, dass der cache wirklich wird etwas, was Sie befürchten. Zum Beispiel, wenn Sie brauchen, um einen stetigen 60 FPS Framerate in einem Spiel, Sie werden uns auf cache-Probleme ständig. Jede Millisekunde zählt hier. Ebenso alles, was läuft die CPU auf 100% über längere Zeit, z.B. das Rendern von Videos, wollen zahlen sehr nahe Aufmerksamkeit zu, wie viel Sie gewinnen könnten, aus der Anpassung der code, der abgegeben wird.
Haben Sie Kontrolle über wie Ihr code erzeugt mit compiler-flags. Einige produzieren weniger code, einige theoretisch schneller durch das abrollen von Schleifen und anderen tricks. Die Suche nach der optimalen Einstellung kann ein sehr zeitaufwändiger Prozess. Ebenso müssen Sie zahlen sehr vorsichtig, die Aufmerksamkeit auf Ihre Daten-Strukturen und wie Sie verwendet werden.
InformationsquelleAutor tadman
Bingo. Hier sind einige Definitionen:
Cache
Verb
Definition:, Daten in einem bestimmten Ort, von dem es mehr effizient oder zuverlässig abgerufen als die aktuelle Lage. Zum Beispiel:
Beispiele: "ich werde den cache-Wert in main memory", "Sie sollten nur den cache, es ist teuer nachschlagen"
Substantiv 1
Definition: Eine Kopie der Daten, die vermutlich mehr unmittelbar zugänglich sein als die Quelldaten.
Beispiele: "Bitte halten Sie, dass im cache, nicht auf unsere Server, so viel"
Substantiv 2
Definition: Einen schnellen Zugriff auf Speicherbereich, auf dem die eines Prozessors, der modernen CPUs haben in der Regel mehrere Ebenen von cache. Sehen cpu-cache -, beachten Sie, dass die GPUs und andere Arten von Prozessoren, die haben auch Ihre eigenen caches mit verschiedenen Implementierungsdetails.
Beispiele: "Überlegen Sie, ob Sie die Daten in ein array, so dass der Zugriff sequenziell werden die cache-kohärente"
InformationsquelleAutor Dan O
Meine definition für Cache wäre eine Sache, die in begrenzter Menge, aber schneller zugreifen, da es weniger Fläche zu suchen. Wenn Sie sprechen über die Zwischenspeicherung in einer beliebigen Programmiersprache, dann bedeutet es, Sie speichern einige Informationen in form einer variable(variable ist nichts als ein Weg, um suchen Sie Ihre Daten im Speicher) im Speicher. Hier Speicher bedeutet, dass beide RAM und physischen cache (CPU cache).
Körperliche/CPU-cache - ist nichts, aber der Speicher ist auch mehr als der RAM, der tatsächlich speichert Kopien der Daten auf den RAM, die CPU sehr oft. Sie haben eine andere Ebene der Kategorisierung nach dem, wie gut die on-board-cache-Speicher(schneller) und off-board-cache. Sie können sehen, diese link
InformationsquelleAutor Apoorva sahay
Diese Nutzung bedeutet, dass
RowData
gehalten wird als Kopie im Speicher, anstatt zu Lesen (ein bisschen) die Zeile aus einer Datei jedes mal, benötigen wir einige Daten von ihm. Lesen aus einer Datei ist viel langsamer [1] als das festhalten an einer Kopie der Daten im Programm gespeichert.[1] Obwohl in einem modernen OS, die tatsächlichen Daten von der Festplatte ist wohl im Speicher gehalten, in der file-system-cache, um zu vermeiden, Lesen Sie die Festplatte, viele Male, um die gleichen Daten immer und immer wieder. Dies aber immer noch bedeutet, dass die Daten kopiert werden muss-aus der file-system-cache für die Anwendung mit den Daten.
InformationsquelleAutor Mats Petersson