Frage

Ich muss den Durchsatz des Systems verbessern.

Der übliche Optimierungszyklus wurde durchgeführt und wir haben bereits einen besseren Durchsatz von 1,5x erreicht.

Ich frage mich jetzt, ob ich die Cachegrind -Ausgabe nutzen kann, um den Durchsatz des Systems zu verbessern.

Kann mich jemand darauf hinweisen, wie ich damit beginnen kann?

Ich weiß, dass wir sicherstellen müssen, dass die am häufigsten verwendeten Daten so klein gehalten werden, dass sie im L1 -Cache bleiben und der nächste Datensatz in den L2 passen.

Ist das die richtige Richtung, die ich einnahm?

War es hilfreich?

Lösung

Es ist wahr, dass die Ausgabe von Cachegrind an sich nicht zu viel Informationen enthält, wie man den Code optimiert. Man muss wissen, wie man es interpretiert und was Sie über Daten, die in L1 und L2 passen, sagen, ist in der Tat die richtige Richtung.

Um vollständig zu verstehen, wie Speicherzugriffsmuster die Leistung beeinflussen, empfehle ich, ein ausgezeichnetes Papier zu lesen "Was jeder Programmierer über den Speicher wissen sollte" von Ulrich Drepper, dem Gnu Libc -Betreuer.

Andere Tipps

Wenn Sie Schwierigkeiten haben, die Cachegrind -Ausgabe zu analysieren, schauen Sie sich KCACHEGRIND an (es sollte in Ihrer Distribution der Wahl verfügbar sein). Ich benutze es und finde es sehr hilfreich.

Entsprechend Die Dokumentation der Cachegrind, Die Details, die Sie von Cachegrind angegeben haben, sind die Anzahl der Cache -Fehler für einen bestimmten Teil Ihres Codes. Sie müssen wissen, wie Caches in der Architektur, auf die Sie abzielen, so wirkt, damit Sie wissen, wie Sie den Code beheben. In der Praxis bedeutet dies, dass Daten kleiner werden oder das Zugriffsmuster einiger Daten ändern, damit zwischengespeicherte Daten immer noch im Cache enthalten sind. Sie müssen jedoch die Daten und den Datenzugriff Ihres Programms verstehen, bevor Sie auf die Informationen reagieren können. Wie es im Handbuch sagt,

Kurz gesagt, Cachegrind kann Ihnen sagen, wo einige Engpässe in Ihrem Code sind, aber es kann Ihnen nicht sagen, wie Sie sie beheben können. Sie müssen das selbst ausarbeiten. Aber zumindest haben Sie die Informationen!

1.5x ist eine schöne Geschwindigkeit. Es bedeutet, dass Sie etwas gefunden haben, das 33% der Zeit brauchte, die Sie loswerden könnten. Ich wette, Sie können mehr tun, noch bevor Sie auf Probleme mit niedrigem Niveau wie Datenspeicher-Cache eingehen. Dies ist ein Beispiel dafür, wie. Grundsätzlich könnten Sie zusätzliche Leistungsprobleme (und Chancen zur Beschleunigung) haben, die vorher nicht groß waren, wie 25% sagen. Nun, mit der Geschwindigkeit von 1,5x, dass 25% jetzt 37,5% sind, so dass es "mehr wert" ist als es war. Oft ist ein solches Problem in Form eines Mid-Stack-Funktionsaufrufs, der Arbeit fordert, die, sobald Sie wissen, wie viel es kostet, nicht völlig erforderlich ist. Da Kcachegrind diese nicht wirklich genau genau bestimmen, erkennen Sie möglicherweise nicht, dass dies ein Problem ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top