SORU
8 Kasım 2008, CUMARTESİ


Zamanlayıcı nano saniye C kullanarak zaman sağlamak için işlev

Bir değer döndürmek için bir API için aldı süresini hesaplamak istiyorum. Zaman böyle bir eylem için alınan nano saniye içinde. API C sınıfı bir fonksiyonu olarak, zamanlayıcı kullanıyorum.h aynı caculate için:

  #include <ctime>
  #include <cstdio>

  using namespace std;

  int main(int argc, char** argv) {

      clock_t start;
      double diff;
      start = clock();
      diff = ( std::clock() - start ) / (double)CLOCKS_PER_SEC;
      cout<<"printf: "<< diff <<'\n';

      return 0;
  }

Yukarıdaki kodu süreyi saniye olarak verir. Nasıl daha hassas bir nano saniye içinde ve aynı alabilirim?

CEVAP
8 Kasım 2008, CUMARTESİ


Diğerleri sürekli fonksiyonu bir döngü içinde çalışan hakkında attılar ne doğru.

Linux ve BSD için clock_gettime() kullanmak istediğiniz.

#include <sys/time.h>

int main()
{
   timespec ts;
   // clock_gettime(CLOCK_MONOTONIC, &ts); // Works on FreeBSD
   clock_gettime(CLOCK_REALTIME, &ts); // Works on Linux
}

Windows için QueryPerformanceCounter kullanmak istediğiniz. Ve burada QPC Daha fazla

Görünüşe göre bazı yonga QPC issue Bir bilinen var, bu yonga setine sahip değilsiniz emin olmak isteyebilirsiniz. Ayrıca bazı çift çekirdekli Bu da problem bir neden olabilir. O devletler nerede sebbbi tarafından ikinci yazı, bkz:

() QueryPerformanceCounter ve () QueryPerformanceFrequency bir teklif biraz daha iyi bir çözünürlük, ama var farklı konular. Örneğin Windows XP, AMD X2 dual çekirdek CPU ya PC dönüş "" (PC bazen rastgele çekirdek tabii biraz geriye atlar), özel yükleme AMD çift çekirdek sürücüsü paket sorunu düzeltmek için. Alamadık başka bir çift çekirdekli İşlemci fark benzer sorunları, p4 p4 çift ht,sahip dual core2, core2 quad, phenom quad).

2013/07/16 DÜZENLEME:

http://msdn.microsoft.com/en-us/library/windows/desktop/ee417693(v=vs.85).aspx belirtildiği gibi, belirli koşullar altında QPC etkinliği üzerinde bazı tartışmalar var gibi görünüyor

Genellikle ayarlamak QueryPerformanceFrequency ...QueryPerformanceCounter ve birden çok işlemci, BIOS bir hata veya sürücüler bu rutinleri dönüyor neden olabilir konu olarak farklı değerler başka bir işlemci gider...

Ancak http://stackoverflow.com/a/4588605/34329 QPC çalışmalıdır Birleşik Devletleri bu StackOverflow cevap XP service pack 2 galibiyetten sonra herhangi bir MS işletim sistemi üzerinde iyi.

Bu makalede, Windows 7 bile olsa işlemci(ler) değişmeyen bir TSK var ve geri harici bir zamanlayıcı düşerse belirlemek gösteriyor. http://performancebydesign.blogspot.com/2012/03/high-resolution-clocks-and-timers-for.html işlemci arasında Eşitleme hala bir sorundur.

Diğer güzel okuma sayaçları ile ilgili

Daha fazla bilgi için bkz: açıklamalar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • multimediaGEEKS LLC

    multimediaGE

    3 Mayıs 2010
  • TheOtherMau5

    TheOtherMau5

    6 Mart 2012
  • Trevor Eckhart

    Trevor Eckha

    19 Aralık 2009