Yazar |
|
reader
Kayıt: 24.12.2007 |
|
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
Kayıt: 11.12.2008 |
|
| 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
Luleburgaz
admin
Kayıt: 15.06.2006 |
|
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
Kayıt: 11.12.2008 |
|
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
|
|
Yazar |
|
reader
Kayıt: 24.12.2007 |
|
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
Kayıt: 24.12.2007 |
|
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 |
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
Kahramanmaras
admin
Kayıt: 24.10.2006 |
|
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
Kayıt: 11.12.2008 |
|
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
Kayıt: 24.12.2007 |
|
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ü
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | | | | |