Anzahl der Taktzyklen von Befehlen ermitteln

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Anzahl der Taktzyklen von Befehlen ermitteln

Beitrag von STARGÅTE »

Tachchen,

hier mal ein Beispiel von mir, wie man von Befehlen die anzahl der benötigten Taktzyklen ermitteln kann.
Einfach oben die CPU-Geschwindigkeit in Herz angeben (bei mir 2.2e9) und Off-Set Zyklen, ein korrekturwert, sodass bei nichts auch 0 rauskommt.

Code: Alles auswählen

Prototype ClockCyclesFunction()

Global ClockCycles_Error.f = 7 ; Zyklen
Global ClockCycles_CPUFrequency.f = 2.2e9 ; Hz

Procedure.f ClockCycles(Function.ClockCyclesFunction)
	Protected Loops = 10, Start, Time
	Repeat
		Loops * 2
		Start = timeGetTime_()
		For Index = 1 To Loops
			Function()
		Next
		Time = timeGetTime_()
	Until Time-Start > 250
	ProcedureReturn ClockCycles_CPUFrequency*(Time-Start)/Loops*1e-3 - ClockCycles_Error
EndProcedure


Procedure Test()

EndProcedure

MessageRequester("Taktzyklenmessung", "Benötigte Taktzyklen: "+#LF$+StrF(ClockCycles(@Test()),1))
Nun kann man in Test() Befehle hinein schreiben und bekommt dnan nach ca. 1s "Hochrechungsdauer" die Anzahl zurück.

Beispiel:

Code: Alles auswählen

A = 1 ; 1 Taktzyklus

Code: Alles auswählen

A = 1 : B = 2 : C = A+B ; 7 Takzyklen

Code: Alles auswählen

Sin(2) ; ~ 100 Takzyklen
Vielleicht hat ja noch jemand verbesserungen anzubieten
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Anzahl der Taktzyklen von Befehlen ermitteln

Beitrag von Thorium »

Möchte nur anmerken das solche Messungen CPU-spezifisch sind. Was auf einem CPU-Model schneller ist, kann auf dem anderen langsamer sein.
Man kann da viel kaputtoptimieren, wenn mans übertreibt.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten