Czas wykonywania wątku.
Ostatnio zmodyfikowano 2015-03-04 23:15
Piastlis Temat założony przez niniejszego użytkownika |
Czas wykonywania wątku. » 2015-03-01 20:27:42 Ostatnio zainteresowłem się programowaniem wielowątkowym.Dość ciekawy i dla mnie nowy sposób programowania.Trzeba algorym podzielić na kilka działających niezależnie części.I tu mam problem.Chodzi mi o pomiar czasu jaki poświęcił procesor na wykonanie konkretnego wątku.Najlepiej gdyby jednostką czasu był takt procesora.Znalazłem w necie kilka sposobów pomiaru czasu ale rzeczywistego.Wiem że jest możliwe gdyż ta informacja jest dostępna w Menedżerze zadań. Za pomoc byłbym wdzięczny. |
|
Monika90 |
» 2015-03-01 20:42:11 To zależy od systemu operacyjnego, np. Windows ma funkcje GetThreadTimes i QueryThreadCycleTime |
|
Piastlis Temat założony przez niniejszego użytkownika |
» 2015-03-01 20:58:23 Według dokumentacji GetThreadTimes działa od xp a QueryThreadCycleTime od visty. Więc ten pierwszy jest bardziej uniwersalny. Przykłady też znalazłem. Dzięki za pomoc:) |
|
Fireho |
» 2015-03-01 22:05:24 Biblioteka ctime ma funkcję clock() , która pozwala robić to samo. |
|
Piastlis Temat założony przez niniejszego użytkownika |
» 2015-03-02 00:08:11 Akurat ta funkcja odmierza czas rzeczywisty.Mam na kompie porządek i dla programów jednowątkowych różnica jest na poziomie 1-2 procent.Ale taki pomiar nie ma sensu dla wielu wątków i kilku rdzeni. |
|
DejaVu |
» 2015-03-04 00:46:42 Napisz algorytm jednowątkowy i wielowątkowy. Porównaj czas działania obu algorytmów dla takich samych zbiorów danych. Nie ma sensu liczyć cykli, bo i tak nie będziesz w stanie wszystkiego obliczyć. /edit: A jak już Ciebie ten temat tak interesuje to najpierw poczytaj trochę tematów, które już istnieją: A jak chcesz mieć wymierne korzyści z implementowania algorytmów to sugeruję zainteresować się obliczeniami na GPU (choć to jest znacznie trudniejsze niż CPU). |
|
Piastlis Temat założony przez niniejszego użytkownika |
» 2015-03-04 02:29:14 Zależy mi na optymalizacji.Dość duża ilość algorytmów 10-20,każdy rozwiązuje problem nie całkowicie. W sytuacji spada wydajnośc pojedyńczego wątku pomyślałem o czasowym usypianiu by procesor miał więcej czasu na te wydajniejsze .A chciałbym to zrobić z wątku nadzorującego.W pojedyńczym wątku wygląda to tak że jest kilkanaście funckji w pętli.Z czego 90% czasu to testy że pojedyńczy algotytm nic nie robi. |
|
maly |
» 2015-03-04 07:57:04 spada wydajnośc pojedyńczego wątku pomyślałem o czasowym usypianiu by procesor miał więcej czasu na te wydajniejsze |
To oznacza że źle podzieliłeś zakres odpowiedzialności wątków a usypianie któregoś z nich jest zaprzeczeniem optymalizacji dla szybkości. Dość duża ilość algorytmów 10-20,każdy rozwiązuje problem nie całkowicie. |
Chcesz powiedzieć że dla każdego algorytmu tworzysz osobne nierównomiernie rozłożone czasowo wątki których wyniki są niezbędne do dalszego działania? Jeśli tak, patrz wyżej. Trzeba algorym podzielić na kilka działających niezależnie części. |
Trzeba podzielić tam gdzie podział ma sens, jesli podział niema sensu to cały algorytm może być jednym wątkiem. Patrz wyżej/wyżej. |
|
« 1 » 2 |