Konuyu görüntüle
IUCODERS FORUM > Programlama > C / C++ > time functions
Yazar
reader


avatar

Kayıt: 24.12.2007
29.11.2009-22:39 #65009
Merhaba arkadaşlar,
Bu C++ da time değişkeni tanımlayıp iki zamanın farkını alıyorum ama fark değişkenini double olarak tanımlarsam hep 0 döndürüyor. time olarak tanımlarsam dosyaya nasıl yazdıracağımı bilemedim.Nasıl olmalı acaba?

time_t start,end;
double diff;

start=time(NULL);
//---
end=time(NULL);
diff=difftime (end,start);
fprintf(fp,"%lf",gecen_zaman); // dosyaya 0 yazıyor.





Yazar
blackout


avatar

Kayıt: 11.12.2008
29.11.2009-23:08 #65010
 
time_t start,end;
double diff;

start=time(NULL);
//---
end=time(NULL);
diff=difftime (end,start);
fprintf(fp,"%lf",gecen_zaman); // dosyaya 0 yazıyor.


"gecen_zaman" değişkeni nereden geliyor?





Yazar
mrflz


avatar
Luleburgaz
admin
Kayıt: 15.06.2006
29.11.2009-23:15 #65011
time fonksiyonu ile hesaplamaya calıstıgın degerler o kadar kısa sürede hesaplanıyorki cevap sıfır cıkıyor..


fonksiynun calısma suresi cok kısa herhalde...





I see the ghosts of navigators but they are lost







Yazar
blackout


avatar

Kayıt: 11.12.2008
29.11.2009-23:27 #65013
typedef unsigned long time_t;

Eğer sistemindeki time_t tipi bu şekilde tanımlı ise 1 saniyeden küçük zamanı ölçmekte işe yaramaz.


Çok kısa süren işlemleri ölçmek istiyorsan şöyle bir yöntem kullanabilirsin:
#include <stdio.h>
#include <time.h>
#include <sys/timeb.h>

int main(void) {
    double dft, dlt;
    struct _timeb tb;

    /* islem oncesindeki zamani al */
    _ftime(&tb);
    dft = time(NULL) + double(tb.millitm)/1000;

    // Arada calisacak olan kodlar

    /* islem sonrasindaki zamani al */
    _ftime(&tb);
    dlt = time(NULL) + double(tb.millitm)/1000;

    printf("\n%5.3f saniye surdu\n", dlt-dft);
    return 0;
}

Çalışan bir örnek:
http://www.iucoders.com/frm_show_topic.jsp?tid=2604#22730 shhh





Yazar
reader


avatar

Kayıt: 24.12.2007
29.11.2009-23:59 #65014
blackout yazdi
 
 
time_t start,end;
double diff;

start=time(NULL);
//---
end=time(NULL);
diff=difftime (end,start);
fprintf(fp,"%lf",gecen_zaman); // dosyaya 0 yazıyor.


"gecen_zaman" değişkeni nereden geliyor?


gecen_zaman diff değişkeni, buraya yazarken değiştirmeyi unutmuşum.





Yazar
reader


avatar

Kayıt: 24.12.2007
30.11.2009-00:15 #65015
blackout yazdi
 
typedef unsigned long time_t;

Eğer sistemindeki time_t tipi bu şekilde tanımlı ise 1 saniyeden küçük zamanı ölçmekte işe yaramaz.


Çok kısa süren işlemleri ölçmek istiyorsan şöyle bir yöntem kullanabilirsin:
#include <stdio.h>
#include <time.h>
#include <sys/timeb.h>

int main(void) {
    double dft, dlt;
    struct _timeb tb;

    /* islem oncesindeki zamani al */
    _ftime(&tb);
    dft = time(NULL) + double(tb.millitm)/1000;

    // Arada calisacak olan kodlar

    /* islem sonrasindaki zamani al */
    _ftime(&tb);
    dlt = time(NULL) + double(tb.millitm)/1000;

    printf("
%5.3f saniye surdu
", dlt-dft);
    return 0;
}

Çalışan bir örnek:
http://www.iucoders.com/frm_show_topic.jsp?tid=2604#22730 shhh


Dediğiniz gibi sanırım kısa olmasından dolayı 0 döndürüyor sonucu. peki bu kütüphanenin C++ daki karşılığı nedir?





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
30.11.2009-00:18 #65016
Bu şekilde de yapabilirsin.

double baslama = clock();
....
cout << "geçen zaman:" << clock() - baslama << endl;





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
blackout


avatar

Kayıt: 11.12.2008
30.11.2009-21:15 #65029
reader yazdi
 
Dediğiniz gibi sanırım kısa olmasından dolayı 0 döndürüyor sonucu. peki bu kütüphanenin C++ daki karşılığı nedir?

#include <sys/timeb.h>
deyimi C++'da da çalışır. Fakat kodların üstünde böyle bir deyimi görmek hoşuna gitmiyorsa extreme'in verdiği normal ctime ile import edilen clock() fonksiyonunu da kullanabilirsin.





Yazar
reader


avatar

Kayıt: 24.12.2007
30.11.2009-22:10 #65031
blackout yazdi
 
reader yazdi
 
Dediğiniz gibi sanırım kısa olmasından dolayı 0 döndürüyor sonucu. peki bu kütüphanenin C++ daki karşılığı nedir?

#include <sys/timeb.h>
deyimi C++'da da çalışır. Fakat kodların üstünde böyle bir deyimi görmek hoşuna gitmiyorsa extreme'in verdiği normal ctime ile import edilen clock() fonksiyonunu da kullanabilirsin.


teşekkürler clock() işimi gördü peace





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb