SORU
9 Mart 2011, ÇARŞAMBA


C program yürütme zamanı

Çeşitli işlemciler üzerinde paralel olarak çalıştırmak olmayı hedefleyen bir C programı var. Yürütme zaman her yerde birkaç dakika için 1 saniye olabilir) kayıt olmak istiyorum. Cevaplar için aradım, ama hepsi bu saati kullanarak işaret ediyor() sonra programı Clocks_per_second değeri bölü aldı saatlerin sayısını hesaplamak içeren fonksiyon.

Clocks_per_second değeri hesaplanır nasıl emin değilim?

Java, sadece ve yürütme önce ve sonra, milisaniye cinsinden geçerli zaman ayırın. C benzer bir şey var mı? Bir göz attım, ama hiçbir şey için ikinci bir karar daha almak için bir yol bulmak için görünmüyor olabilir.

Ayrıca bir profiler bir seçenek olacaktır farkındayım, ama bir zamanlayıcı uygulamak için arıyorum kendimi.

Teşekkürler

CEVAP
9 Mart 2011, ÇARŞAMBA


CLOCKS_PER_SEC <time.h> beyan edilen bir sabittir. CPU süresi C uygulamasında bir görev tarafından kullanılan, kullanın:

clock_t begin, end;
double time_spent;

begin = clock();
/* here, do your time-consuming job */
end = clock();
time_spent = (double)(end - begin) / CLOCKS_PER_SEC;

Bu bir kayan nokta türü olarak döndürür unutmayın. Bu bir ikinci (4.52 saniye ölçmek gibi) daha hassas olabilir. Hassas mimarisi bağlıdır; kolayca 10ms veya daha düşük, ama eski Windows makineleri (Win98 döneminden) modern sistemlerde 60ms daha yakın oldu.

clock() standart C; çalışıyor "". her yerde Sisteme özel fonksiyonlar, Unix benzeri sistemlerde getrusage() gibi.

Java System.currentTimeMillis() aynı şeyi ölçmez. Bir"": sen ne kadar çalıştırmak için program için aldı ölçmek yardımcı olabilir, ama zaman nasıl kullanıldığını söylemez. duvar saati Bir çok görevli sistemlerde (hepsi yani), bu çok farklı olabilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DrePwn

    DrePwn

    22 Temmuz 2011
  • Make:

    Make:

    23 Mart 2006
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009