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 |