Seite 1 von 2

Frequenz eures 'Performance Counters'

Verfasst: 25.08.2014 22:38
von SBond
Hi Leute,

eventuell könntet ihr mir einen kleinen gefallen tun, sofern ihr Lust habt <)
Ich schreibe gerade an meinem Programm, das später Daten von einem Mikrocontroller auswerten soll. Dafür benötige ich u.a. eine recht genaue Zeitmessung.
Glücklicherweise ist in ein moderner Computer mit einem Performance Counter ausgestattet, der dieses ermöglicht. Die Frequenz mit der ein solcher Baustein arbeitet, ist allerdings hardwareabhängig.

Würdet ihr bitte den folgenden Code ausführen und bescheid geben, welche Frequenz ausgegeben wird? Zusätzlich wäre noch interessant, wie alt euer Computer ungefähr ist. Ich möchte damit nur prüfen, in welchem Bereich diese Frequenz liegt.

Der Code ist nur für Windows. Die Linux/OSX-APIs sind mir gerade nicht bekannt

Code: Alles auswählen

EnableExplicit
Global qHRPC_Frequenz.q = 0
Global sAusgabe.s = ""

QueryPerformanceFrequency_(@qHRPC_Frequenz)

If (qHRPC_Frequenz <> 0)
	sAusgabe = "HRPC-Frequenz:" + #TAB$ + StrF(qHRPC_Frequenz/Int(Pow(10, 6)), 6) + " MHz" + #CRLF$
	sAusgabe + "Auflösung:" + #TAB$ + StrF(Int(Pow(10, 9))/qHRPC_Frequenz, 3) + " ns"
	MessageRequester("High Resolution Performance Counter", sAusgabe)
EndIf
Auf meinem 6 Jahre alten Laptop (Intel Core2Duo) liegt die Frequenz bei ca. 2,4 MHz. Damit liegt die zeitliche AUflösung bei 404 Nanosekunden.

viele Grüße,
SBond

Re: Frequenz eures 'Performance Counters'

Verfasst: 25.08.2014 22:40
von RSBasic
High Resolution Performance Counter hat geschrieben:HRPC-Frequenz: 3.214619 MHz

Auflösung: 311.079 ns
Jahr: 2012

Re: Frequenz eures 'Performance Counters'

Verfasst: 25.08.2014 23:03
von SBond
super.

danke dir :mrgreen:

Re: Frequenz eures 'Performance Counters'

Verfasst: 25.08.2014 23:07
von STARGÅTE
---------------------------
High Resolution Performance Counter
---------------------------
HRPC-Frequenz: 14.318180 MHz

Auflösung: 69.841 ns
---------------------------
OK
---------------------------
AMD Phenom II X4 (3,21GHz) von 2009

Edit: Eine Zeitauflösung von 70ns heißt noch lange nicht, dass der PC auch in der Lage ist genau 70ns zu messen/warten.
Edit2: Hat sich erledigt :|

Re: Frequenz eures 'Performance Counters'

Verfasst: 25.08.2014 23:12
von Derren
HRPC-Frequenz: 14.282316 MHz

Auflösung: 70.017 ms
HP Compaq 615 (Laptop), AMD Athlon X2 Dualcore QL-66 @2.2GHz - Kaufdatum Mai 2010

Re: Frequenz eures 'Performance Counters'

Verfasst: 25.08.2014 23:16
von Kiffi
HRPC-Frequenz: 2.339531 MHz
Auflösung: 427.436 ns
Der Rechner ist von 2009

Grüße ... Peter

Re: Frequenz eures 'Performance Counters'

Verfasst: 25.08.2014 23:18
von Derren
Super. Wenn ich mir das so ansehe scheint es mir als ob in meinem Laptop ein schnellerer Taktgeber verbaut wurde um den Leistungsindex für Windows und/oder 3rd Party Benchmark tools künstlich in die Höhe zu schrauben :?

Re: Frequenz eures 'Performance Counters'

Verfasst: 25.08.2014 23:46
von SBond
sogar 14 MHz dabei. Ich dachte es liegt immer so im Bereich 2-4 MHz. ....verdammt... ich will einen neuen Rechner :mrgreen:
Das Messen solch kurzer Zeiten ist nicht möglich, zumindest unter Windows. Allerdings kann ich damit sehr gut frequenzen berechnen, wenn ich eine gewisse Zeit lang einen Datenstrom aufnehme. ElapsedMilliseconds() ist mir auch einfach zu grob.

vielen Dank euch allen :)
solche hilfsbereitschaft ist in deutschen Foren ja keine selbstverständlichkeit mehr. *böse Erinnerungen :( *

...mal so ganz nebenbei... kann man:

Code: Alles auswählen

Int(Pow(10, 6))
auch humaner umschreiben? 1000000000 sieht ja blöd aus und sowas wie 10^9 geht auch nicht. "Int(Pow(10, 6))" sieht schon fast wieder kryptisch aus <)

Re: Frequenz eures 'Performance Counters'

Verfasst: 26.08.2014 00:20
von NicTheQuick
SBond hat geschrieben:sogar 14 MHz dabei. Ich dachte es liegt immer so im Bereich 2-4 MHz. ....verdammt... ich will einen neuen Rechner :mrgreen:
Das Messen solch kurzer Zeiten ist nicht möglich, zumindest unter Windows. Allerdings kann ich damit sehr gut frequenzen berechnen, wenn ich eine gewisse Zeit lang einen Datenstrom aufnehme. ElapsedMilliseconds() ist mir auch einfach zu grob.
Wenn du solch genaue Messungen machen willst, solltest du das direkt in deinen Mikrocontroller einbauen. Auf einem Multitasking-Betriebssystem hast du immer Ungenauigkeiten, weil irgendwelche anderen Interrupts auftreten, die du nicht kontrollieren kannst.
...mal so ganz nebenbei... kann man:

Code: Alles auswählen

Int(Pow(10, 6))
auch humaner umschreiben? 1000000000 sieht ja blöd aus und sowas wie 10^9 geht auch nicht. "Int(Pow(10, 6))" sieht schon fast wieder kryptisch aus <)

Code: Alles auswählen

Debug 1e6

Re: Frequenz eures 'Performance Counters'

Verfasst: 26.08.2014 00:40
von SBond
NicTheQuick hat geschrieben:Wenn du solch genaue Messungen machen willst, solltest du das direkt in deinen Mikrocontroller einbauen. Auf einem Multitasking-Betriebssystem hast du immer Ungenauigkeiten, weil irgendwelche anderen Interrupts auftreten, die du nicht kontrollieren kannst.
Das ist durchaus die beste und sicherste Möglichkeit. Mit dem Zeitmesser kann ich allerdings auch Fälle abdecken, bei dem ich keinen Einfluss auf die MCU habe. Je nach dem wie der Anwendungsfall ist, muss man die beste Lösung suchen. :D
NicTheQuick hat geschrieben:

Code: Alles auswählen

Debug 1e6
omg :shock:
...ich darf echt keinem erzählen, dass ich ein Ingenieur bin. ...aber Abschluss und Kompetenz sind ja nicht das selbe. Jetzt weiß ich es ja *hihi*