logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zmierzyć czas wykonania procedury w C++ i wyświetlić wynik?

krzysztof21 24 Lut 2006 21:27 8476 16
REKLAMA
  • #1 2343967
    krzysztof21
    Poziom 11  
    Posty: 18
    Cześć umie ktoś napisać program który będzie mierzył czas działania np jakiejś procedury . Chodzi mi oto Aby ten program mierzył czas od samego początku procedury aż do samego końca danej procedury .
    A potem wyświetlał czas działania na ekranie .

    Moderowany przez Light-I:

    Proszę jaśniej tytułować tematy. Poprawiono.

  • REKLAMA
  • #3 2344605
    krzysztof21
    Poziom 11  
    Posty: 18
    Chodzi mi o taki program który będzie mierzył czas wykonywnia jakiego kolwiek programu np Program sortujący . Ogółem chodzi mi oto aby program zaczoł mierzyć czas od rozpoczęcia sortowania aż do zakączenia procesu sortowania .
  • #4 2344654
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    A może coś więcej? Jaki system operacyjny, jaki kompilator i takie tam mało ważne duperele.
  • REKLAMA
  • #5 2344659
    Konto nie istnieje
    Konto nie istnieje  
  • #6 2345111
    krzysztof21
    Poziom 11  
    Posty: 18
    Dzięki mam nadzieje że będzie to działać w środowisku C++
  • #7 2345968
    dziqus
    Poziom 18  
    Posty: 208
    Pomógł: 17
    Ocena: 15
    jak to tylko skopiujesz do kompilatora c to nie bedzie dzialac.
  • REKLAMA
  • #8 2346051
    krzysztof21
    Poziom 11  
    Posty: 18
    Chodziło mi oto że po przerobieniu na język c++ ale z tego co widze to będzie trudne.
  • #9 2346286
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    krzysztof21 napisał:
    Chodziło mi oto że po przerobieniu na język c++ ale z tego co widze to będzie trudne.
    Więc oczekujesz że najpierw odgadniemy jaki kompilator użyć, potem odgadniemy jaki system operacyjny, a na końcu napiszemy za Ciebie program?
  • REKLAMA
  • #10 2347222
    krzysztof21
    Poziom 11  
    Posty: 18
    Używam kompilatora Bloodshed Dev C++ sys. Windows xp ( jeśli oto chodziło) . I jedynie miałem nadzieje na pomoc bo akurat takiej procedury do mojego zaliczenia nie potrafie zrobić .
  • #11 2347684
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Możesz skorzystać z funkcji GetTickCount() pobrać czas przed i po wykonaniu danej procedury i odjąć od siebie wartości, po szczegóły funkcji odsyłam do MSDN.
  • #12 2347966
    kordan11
    Poziom 18  
    Posty: 241
    Pomógł: 24
    Ocena: 10
    Na początku wykonywanej procedury dajesz
    
    float Start = GetTickCount();
    

    a na końcu
    
    float End = GetTickCount();
    

    a to wyświetli czas w Label1
    
    Label1->Caption = FloatToStr((End - Start) / 1000) + " s.";
    

    Ten kod pokaże Ci czas z dokładnością co do 0,001 sekundy
  • #13 2348565
    krzysztof21
    Poziom 11  
    Posty: 18
    Dzięki i sorki za kłopot ( jeden problem z głowy)

    a przy okazji da się to przerobić na program pisany pod dosa
  • #14 2349069
    kordan11
    Poziom 18  
    Posty: 241
    Pomógł: 24
    Ocena: 10
    powinno się dać, tylko wyświetlanie musisz zmienić.
  • #15 2353095
    krzysztof21
    Poziom 11  
    Posty: 18
    Cze to znowu ja bróbowałem to przerobić na wersie działającą pod dosa ale nie mam pojęcia jak to zrobić więc jeśli umiecie to przerobić to byłbym wdzięczny .
  • #16 2353537
    dziqus
    Poziom 18  
    Posty: 208
    Pomógł: 17
    Ocena: 15
    przeciez sposob pobierania czasow masz podany wyzej a zmieniasz tylko sposob wyswietlenia wyniku bo pod konsola nie ma labela tylko liczbe wyswietlasz. pewnie trzeba bedzie dolaczyc naglowek windows.h
  • #17 2353695
    krzysztof21
    Poziom 11  
    Posty: 18
    Teraz to działa wielkie dzięki

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczyła sposobu mierzenia czasu wykonania procedury w języku C++ na systemie Windows XP z użyciem kompilatora Bloodshed Dev C++. Autor chciał zmierzyć czas działania dowolnej procedury, np. sortowania, od jej początku do końca i wyświetlić wynik na ekranie. Zaproponowano wykorzystanie funkcji GetTickCount() z Windows API, która zwraca czas w milisekundach od uruchomienia systemu. Przed rozpoczęciem procedury pobiera się czas startowy, po jej zakończeniu czas końcowy, a różnica tych wartości daje czas wykonania w milisekundach. Przykładowo, wynik można wyświetlić konwertując różnicę na sekundy i pokazując w kontrolce Label lub na konsoli. Poruszono także temat przeniesienia rozwiązania na środowisko DOS, gdzie konieczne jest dostosowanie sposobu wyświetlania wyniku, gdyż nie ma tam kontrolek GUI. Wskazano, że sam sposób pobierania czasu pozostaje ten sam, a do programu należy dołączyć nagłówek windows.h. Dyskusja zawierała również fragment kodu w Pascalu jako przykład, który jednak wymagał adaptacji do C++.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA