Lösung : Prozessorspeed in MHZ
-
Original erstellt von PeterTheMaster:
wie kann es sein, dass das ueberhaupt funktioniert hat? 2^32 ist doch 34, oder? haben das alle verbessert die hier ergebnisse gepostet haben, oder was ist los?Ähm...2+32=34, ich weiß ja nicht wie man dir Potenzrechnung beigebracht hat, aber bei mir ist 2^32 = 4294967296 != 34.
Um nochmach volkard zu Zitieren
"obwohl genügend ******* sagen, ohne mathe könne man proggen..."
-
2^32==34
-
Original erstellt von Mr. N:
2^32==342^32 != 34
-
Das kommt darauf an,
#define ^ +
mfg
-bg-
-
Ist das die Standarddefinition von ^ ?
-
2^32 == 34
2³² != 34Meint ihr PeterTheMaster ist dumm? Der hat schon recht.
-
Original erstellt von -bg-:
**Das kommt darauf an,#define ^ +
mfg
-bg-**kannst in c++ nur bezeichner definen. also zeichenkette aus buchstaben, unterstrich und ziffern. sogar c++-schlüsselwürter gehen, das der präprozessor ja noch c++-blind ist.
aber auch ganz ohne definen, muß ich wirklich bestätigen, daß 2^32==34.
-
Dann gebe mir bitte mal jemand die exakte mathematische Definition von ^
-
Ich dachte immer ^ bedeutet hoch x?
z.B. 2^8
2*2*2*2*2*2*2*2oder?
-
Ok, ihr habt teilweise recht und ich auch
2^32 == 34 in C, aber nicht in einigen anderen Sprachen
Ich zitiere da ovn kungruedi (wieter oben in diesem Thread):
@TheBigW
in C(++) ist ^ der exklusiv oder Operator, dass liegt nicht am VC++ (auch wenn der viel anders macht). pow (aus der math.h bzw. cmath) benutzt man zum potenzieren. (Warum es keinen ** Operator, wie in FORTRAN gibt, versteh ich auch nicht ganz )[ Dieser Beitrag wurde am 17.11.2002 um 13:53 Uhr von TriPhoenix editiert. ]
-
erschreckend, wieviele in einem c++ board nicht wissen, was ^ in c(++) bedeutet
-
Original erstellt von Mr. N:
erschreckend, wieviele in einem c++ board nicht wissen, was ^ in c(++) bedeutetIch weiß es shcon und benutze es auch ständig, aber das kam so ausm Zusammenhang und da denkt man eher an das übliche
-
Also ich hätte da noch ne Frage, wieso wird in dem Code das Register edx auch benutzt? Also ich hab mal n bissl rumgespielt und hab mir das hier gebastelt:
// includes #include <stdio.h> #include <windows.h> // calc mhz int GetMHZ() { // private DWORD dwValue1; DWORD dwValue2; // calc bars __asm{ rdtsc mov dwValue1, eax } Sleep(1000); __asm{ rdtsc mov dwValue2, eax } // return value return (int)(dwValue2 - dwValue1)/(1000000); } // entry int main() { printf("%d Mhz", GetMHZ()); getchar(); return 0; }
Jetzt meine Frage, ist das korrekt oder ist das totaler Müll, weil ich finde das hier viel verständlicher und es funktionier (bei mir jedenfalls) genauso...
cu para
-
Das geht solange eax nicht überläuft. der TSC ist ein 64-bit-Wert, der hohe teil landet in edx, der niedrige in eax. Solange also eax nicht überläuft ist alles gut, sobald eax jedoch überläuft kriegst du einen gigantsichen negativen Wert.
-
Ok, gut, dann hab ich das verstanden.
danke und ciao
-
Ich habe alle Codes die hier in diesem Topic aufgeführt wurden ausgetestet aber keiner davon lies sich compilieren weil immer fehler auftraten...
-
moin
was man so alles findet wenn man mal auf "suchen" clickt..
@ kingruedi, falls es noch interessiert.. nach monaten
aus deinem beispiel..
__asm__ __volatile__("rdtsc":"=a"(value3),"=d"(value3)::);
wir schauen nochmal genauer hin und machen aus der letzten drei.. eine vier..
und schon funktionierts.. mal davon abgesehen das die "::" da vielleicht nicht
stehten sollten
und entelechie hat wohl auch nur copy&paste benutzt[ Dieser Beitrag wurde am 07.05.2003 um 21:18 Uhr von stahl editiert. ]
-
Moin!
Ja, funktioniert. Hab den Athlon 2000+ und zeigt mir 1657 MHz an.
Allerdings auch nur, wenn ich die Funktionsklammern hinzufüge, andernfalls die Addresse.Ich weiß nur, dass VC++ __asm oder_asm haben will und Borland nur asm.
Ob es Unterschiede in der Ausführung gibt, weiß ich net. Glaube aber nicht.thx.
bjöRn
-
Hallo!
Gibt es auch eine Möglichkeit die CPU-Geschwindigkeit OHNE RDTSC herauszufinden?
Danke im voraus!
MfG
486er-User
-
Kann man die Geschwindigkeit der CPU auch herausfinden, ohne sleep(1000); zu verwenden?