Am Sonntag, 12. September 2004 14:04 schrieb Eric Schaefer:
On Sun, 2004-09-12 at 10:45, Friedrich W. H. Kossebau wrote:
Theoretisch schon, aber QueryPerformanceCounter() liefert nur Werte mit einer Granularität > 1. Quelle: Empirisch ermittelt.
Wie genau ermittelt? Zwei 1-Zyklische Maschinenbefehle direkt hintereinander, die den Wert in jeweils ein anderes Register kopieren, und dann die Differenz gebildet? QueryPerformanceCounter() ist vielleicht so implementiert, daß es mehrere CPU-Zyklen braucht...
Nein, das meinte ich nicht.
DWORD x,y; QueryPerformanceCounter(&x); DoSomething(); QueryPerformanceCounter(&y);
y-x kann dabei durchaus 0 sein. Es ist aber schon lange her, daß ich das getestet habe. D.h. es kann mittlerweile so sein, daß y-x immer >0 ist. In diesem Fall widerrufe ich und behaupte das Gegenteil ;-)
Mh, vielleicht war ja QueryPerformanceCounter() bogus implementiert, sprich, der Wert des Hochzählregisters nicht als mutual markiert und der Compiler hat die zweite Abfrage wegoptimiert ;) Hat jemand den Sourcecode? :P
Naja, steigt in meinen Augen eher, denn Du kannst vergleichen und hast trotzdem Deine Meinung ;)
Das war auch nicht so ganz ernst gemeint. Generell finde ich die API nicht so furchtbar schlecht, wie sie immer gemacht wird. Es ist auch eigentlich alles irgendwie dokumentiert, aber es ist häufig nicht ganz einfach die richtige Doku zu finden. Aber da geht es Linux ja auch nicht anders.
Um mal wieder OnT zu werden: Manchmal ist es ein echtes Problem zu einem Thema die Doku zu finden, da man einfach nicht weiß, daß gewisse Schnittstellen überhaupt vorhanden sind. Es müßte für Linux eine Dokumentation geben die nicht irgendwelche APIs dokumentiert (davon gibt es nun wirklich reichlich), sondern statt dessen Konzepte. So in der Art wie: "Wie messe ich möglichst genau, wieviel Zeit zwischen A und B vergangen ist?", "Was muß ich tun, damit mein Programm als Daemon laufen kann?". Vielfach findet man sowas in guten Büchern (APITUE), aber eben auch nicht immer alle Themen. Oft bekommt man auch nur ein Interface hingeklatscht, ohne weitere Erklärung, warum man das so und nicht anders machen muß und was evtl. der Unterschied zu anderen verbreiteten Interfaces ist (siehe man). Als Quickreferenz ist das je auch wirklich toll, aber daneben fehlt eben die Dokumentation des Konzeptes.
Dafür gibt es doch die HowTos, auch wenn ich zugebe, daß die nicht alles abdecken, viel zu oft veraltet oder lückenhaft sind. Vielleicht schafft es das Linux-Documentation-Project (http://www.tldp.org) ja, das irgendwann zu verändern.
Gruß Friedrich