Kapitel 3. Speicherbestellung

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

In Kapitel 2 haben wir das Konzept der Speicheranordnung kurz angeschnitten. In diesem Kapitel werden wir in dieses Thema eintauchen und alle verfügbaren Speicheranordnungsoptionen untersuchen und vor allem, wann wir welche verwenden sollten.

Neuordnung und Optimierungen

Prozessoren und Compiler wenden alle möglichen Tricks an, damit deine Programme so schnell wie möglich laufen. Ein Prozessor kann zum Beispiel feststellen, dass sich zwei bestimmte aufeinanderfolgende Anweisungen in deinem Programm nicht gegenseitig beeinflussen, und sie in der falschen Reihenfolge ausführen, wenn das schneller ist. Während eine Anweisung kurzzeitig blockiert wird, um Daten aus dem Hauptspeicher zu holen, können mehrere der folgenden Anweisungen ausgeführt und beendet werden, bevor die erste Anweisung beendet ist, solange das Verhalten deines Programms dadurch nicht verändert wird. Ebenso kann ein Compiler entscheiden, Teile deines Programms neu zu ordnen oder umzuschreiben, wenn er Grund zu der Annahme hat, dass dies zu einer schnelleren Ausführung führt. Aber auch hier gilt, dass dies das Verhalten deines Programms nicht verändert.

Schauen wir uns die folgende Funktion als Beispiel an:

fn f(a: &mut i32, b: &mut i32) {
    *a += 1;
    *b += 1;
    *a += 1;
}

In diesem Fall wird der Compiler mit Sicherheit verstehen, dass die Reihenfolge ...

Get Rust Atomics und Schlösser now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.