• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pomiar czasu

Object Storage Arubacloud
0 głosów
636 wizyt
pytanie zadane 13 grudnia 2019 w C i C++ przez Zydu Początkujący (340 p.)

Witam,mam następujący problem z zadaniem. Mam do napisania program mierzący czas sortowania poszczególnych  algorytmów,program powinien przerwać sortowanie i przejść do kolejnego algorytmu sortującego,kiedy to będzie trwało powyżej 60 sekund,nie za bardzo wiem jak to napisać(Chodzi konkretnie o przerwanie sortowania po 60 sekundach,reszta jest napisana)

1
komentarz 13 grudnia 2019 przez tkz Nałogowiec (42,000 p.)
Użył bym wątków. Wydaje mi się to najprostsze rozwiązanie,

2 odpowiedzi

+1 głos
odpowiedź 13 grudnia 2019 przez tangarr Mędrzec (154,860 p.)
wybrane 14 grudnia 2019 przez Zydu
 
Najlepsza
Jeżeli sam napisałeś algorytmy sortujące to nie ma większego problemu. Przed rozpoczęciem algorytmu zapisujesz aktualny czas a następnie w każdej iteracji algorytmu sprawdzasz, czy nie przekroczyłeś czasu.
Sprawa się komplikuje, jeżeli używasz zewnętrznych algorytmów. Tutaj widzę tylko możliwość przekazania do algorytmu funkcji porównującej elementy rzucającej wyjątek w przypadku przekroczenia czasu.
komentarz 14 grudnia 2019 przez Zydu Początkujący (340 p.)
Sam pisałem,dziękuje za podpowiedź.Nie pomyślałbym o tym :D
1
komentarz 14 grudnia 2019 przez tkz Nałogowiec (42,000 p.)
Jeżeli liczysz na bardzo wiarygodne dane, to ten sposób odpada. Samo porównanie, pobranie czasu zabiera cykle procesora. Jest to rozwiązanie, ale nie najlepsze. Wro.cpp (albo jakoś podobnie) na yt, jest "lekcja" jak mierzyć czas w C++. Polecam zajrzeć.
+1 głos
odpowiedź 13 grudnia 2019 przez tkz Nałogowiec (42,000 p.)
#include <iostream>
#include <future>
#include <thread>
#include <chrono>
#include <vector>
#include <algorithm>
int main()
{
    std::vector<int> v {54,234,6,34,23,4,32,64,57,56,2345,31,421,34,6,547,45,7845,341,24,65,768,5,4,542,534,890};
    std::cout<<std::is_sorted(v.begin(),v.end());
    std::future<void> future = std::async(std::launch::async, [&v]()
    { 
        std::sort(v.begin(), v.end());
    }); 
    std::cout<<std::is_sorted(v.begin(),v.end());
    std::future_status status = future.wait_for(std::chrono::nanoseconds(123));
    do {
        if (status == std::future_status::timeout) 
        {
            
            break;
        } 
        
    } while (status != std::future_status::ready); 
 
std::cout<<std::is_sorted(v.begin(),v.end());
}

 

Podobne pytania

+1 głos
3 odpowiedzi 1,103 wizyt
pytanie zadane 18 kwietnia 2018 w C i C++ przez kikosiak Obywatel (1,010 p.)
0 głosów
1 odpowiedź 3,337 wizyt
pytanie zadane 30 października 2017 w C i C++ przez Haker2004 Użytkownik (590 p.)
+1 głos
1 odpowiedź 278 wizyt
pytanie zadane 6 kwietnia 2022 w C# przez jakubmarek Nowicjusz (160 p.)

92,615 zapytań

141,465 odpowiedzi

319,779 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...