Ich würde gerne Hardware-Leistungsindikator verwenden, speziell x86-CPUs, um Cache-Misses oder Verzweigungsfehlvorhersage zu erhalten. Leistungsindikatoren werden in fortgeschrittenen Profilern wie Intel VTune stark verwendet. Bitte seien Sie nicht Leistungsindikatoren auf Windows-Betriebssystemen verwechselt.
Um diese Zähler im C / C ++ - Programm zu verwenden, kann man PAPI verwenden: Ссылка
Damit können Sie problemlos Leistungsindikatoren verwenden, jedoch nur unter Linux. PAPI hat einmal Windows unterstützt, aber nicht jetzt.
Gibt es jemanden, der kürzlich versucht hat, mit PAPI oder anderen APIs Hardware-Leistungsindikatoren unter Windows zu verwenden?
Sie können die Anweisung RDPMC oder __readpmc MSVC-Compiler intrinsisch, was das Gleiche ist.
Windows verbietet jedoch Anwendungen im Benutzermodus, diese Anweisung auszuführen, indem CR4.PCE auf 0 gesetzt wird. Vermutlich geschieht dies, weil die Bedeutung jedes Zählers von MSR-Registern bestimmt wird, auf die nur im Kernelmodus zugegriffen werden kann. Mit anderen Worten, es sei denn, Sie sind ein Kernel-Modus-Modul (z. B. ein Gerätetreiber), erhalten Sie "privilegierte Anweisung" Trap, wenn Sie versuchen, diese Anweisung auszuführen.
Wenn Sie eine Anwendung im Benutzermodus schreiben, ist Ihre einzige Option (wie @Christopher in den Kommentaren erwähnt wird), ein Kernelmodul zu schreiben, das diese Anweisung für Sie ausführt (Sie werden eine Benutzer- & gt; ) und aktivieren Sie die Testsignatur auf Ihrem Computer, damit Ihr vermutlich selbst signierter "Treiber" geladen werden kann. Dies bedeutet, dass Sie diese App nicht einfach verteilen können, aber das wird für das In-House-Tuning funktionieren.
Tags und Links c x86 profiling performance x86-64