folder Tahribat.com Forumları
linefolder C - C++
linefolder C++ Kod Bloğu İçerisinde Geçen Zaman ?



C++ Kod Bloğu İçerisinde Geçen Zaman ?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Altair
    Altair's avatar
    Kayıt Tarihi: 31/Aralık/2009
    Erkek

    Merhabalar yazdığım bir programda belirli kod blokları içerinde geçen zamanı hesaplamam gerekiyor. Blok girişine ve blok çıkışına birer tane clock() fonksiyonunu içeren değişken koydum ve sondaki değişkenden baştakini çıkarınca sonuca ulaşıyorum. Ancak olay çok hızlı gerçekleştiği için genelde 0 değerini alıyorum. http://www.cplusplus.com/reference/ctime/clock/ burayı inceleyip fark/CLOCKS_PER_SEC yapmama rağmen yine sıfır değeri geliyor bu sanırım milisaniye cinsinden hesaplıyor o yüzden.

    Forumlardan birinde 12ms altındaki değerleri ölçülemediğini okudum ne kadar doğru bilmiyorum. Bloklar arasında zaman sıralaması yapabilmem için hepsinin bir zaman değeri olması gerekiyor toplam 4 blok olduğunu düşünürsek genelde ilk 2 si aynı değerleri son 2 si de sıfır değerini dönderiyor. Bu durumun düzelmesi için nanosaniye ile karşılaştırma yapmam gerekiyor sanırım. Başka herhangi bir fikri olan var mı ? Kod bloklarının içerisine herhangi bir bekleme yada sleep komutu koyamıyorum malesef.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    uLtRaLoVeR
    uLtRaLoVeR's avatar
    Kayıt Tarihi: 25/Haziran/2007
    Erkek

    Bloğu bir döngü içine al 1000 defa döndür çıkan sonucu 1000'e böl. Ya da bölme :) Gerçek değerin onun 1000'de biri olduğunu bil :)

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    niRvana_GG
    niRvana_GG's avatar
    Kayıt Tarihi: 01/Kasım/2012
    Erkek

    https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408%28v=vs.85%29.aspx


    Belki işine yarar.

     

    http://stackoverflow.com/questions/14337278/precise-time-measurement

     

    Bu da mesele ile ilgili yorumlar.

    niRvana_GG tarafından 01/May/15 02:14 tarihinde düzenlenmiştir
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    verilen linklerdeki c++11 kodu en güzel olanı sanırım;

     

    auto begin = std::chrono::high_resolution_clock::now();

    // code to benchmark

    auto end = std::chrono::high_resolution_clock::now();
    std::cout << std::chrono::duration_cast<std::chrono::nanoseconds>(end-begin).count() << "ns" << std::endl;

     


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Altair
    Altair's avatar
    Kayıt Tarihi: 31/Aralık/2009
    Erkek
    DrKill bunu yazdı

    verilen linklerdeki c++11 kodu en güzel olanı sanırım;

     

    auto begin = std::chrono::high_resolution_clock::now();

    // code to benchmark

    auto end = std::chrono::high_resolution_clock::now();
    std::cout << std::chrono::duration_cast(end-begin).count() << "ns" << std::endl;

     

    hocam baktımda kullanamadım sanırım kütüphane ile ilgil ibir sıkıntı var.

    edit : farklı bir yol buldum blokların hepsi aynı input u alacağından dolayı bende elimdeki input un boyutunu 100 kat civarında arttırınca hangi bloğun daha kısa sürede işlemi tamamladığını buldum :D nanosaniye olayınada gerek kalmadı böylece.

    Altair tarafından 01/May/15 03:22 tarihinde düzenlenmiştir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Bu işler için profiler kullanmayı deneseniz çok daha iyi olur. O kadar compiler direktifine ihtiyacınız da kalmaz, performans ölçümü için yazdığınız kod bölümlerini product'e çevirirken silmenize de...


    Olaylara karışmayın!
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NmC
    NmC's avatar
    Kayıt Tarihi: 23/Kasım/2008
    Erkek
    Altair bunu yazdı
    DrKill bunu yazdı

    verilen linklerdeki c++11 kodu en güzel olanı sanırım;

     

    auto begin = std::chrono::high_resolution_clock::now();

    // code to benchmark

    auto end = std::chrono::high_resolution_clock::now();
    std::cout << std::chrono::duration_cast(end-begin).count() << "ns" << std::endl;

     

    hocam baktımda kullanamadım sanırım kütüphane ile ilgil ibir sıkıntı var.

    edit : farklı bir yol buldum blokların hepsi aynı input u alacağından dolayı bende elimdeki input un boyutunu 100 kat civarında arttırınca hangi bloğun daha kısa sürede işlemi tamamladığını buldum :D nanosaniye olayınada gerek kalmadı böylece.

    2. Mesajda tavsiye edilen şey de buydu zaten hocam :)


    There are 10 types of people in the world. Those who knows binary and those who dont...
Toplam Hit: 2102 Toplam Mesaj: 7