-
Data: 2011-05-09 19:18:06
Temat: Re: Skąd dokładny zegar w C pod Win XP/7 ?
Od: Zbigniew Malec <a...@i...invalid> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Mon, 9 May 2011 09:43:43 +0200, KrisB wrote:
> 1) Mam algorytm który będzie wykonywany dla danych rozmiaru max ~naście. Wykona się
to w czasie max kilku msek.
A to w takim razie do czego ci jest ta wiedza o sprawności algorytmu
potrzebna? Jeżeli to zawsze będą małe dane, to niezależnie od algorytmu*
czas wykonania będzie krótki. Ulepszanie algorytmów ma sens jedynie* w
przypadku, kiedy spodziewamy się dużej ilości danych, albo sama czynność
jest wykonywana bardzo często.
Jeżeli nie masz dobrych podstaw (problemu z wydajnością), to lepiej się za
takie optymalizacje nie brać i zobaczyć jak to się będzie faktycznie
zachowywało w realnej sytuacji i dopiero jak mamy pewność, że poprawa
algorytmu ma sens to się do niej bierzemy. Tutaj przydaje się profiler.
* w granicach rozsądku i z pominięciem sytuacji ekstremalnych oraz
bibliotek (program ma być tak szybki, jak tego oczekuje jego użytkownik,
ale biblioteka musi być tak szybka, jak oczekuje tego jej najbardziej
niecierpliwy użytkownik ;) ).
> 2) Co do tych tysięcy prób: a jak "odfiltrować" koszty samej obsługi tych tysięcy
prób ? Wywołanie / obsługa pętli / niemiarodajna
> zawartość cache tj. na ogół większość danych przy powtarzających się wywołaniach
już będzie w cache ?
To jest oczywiście dobre i ważne pytanie. Znowu zależy jaka dokładność
ciebie interesuje i co tak na prawdę chcesz mierzyć.
Narzut na pętlę nie będzie duży, natomiast ma tę zaletę, że koszt jego
(narzutu) jest przewidywalny. Jeżeli chcesz porównać dwa algorytmy, to taki
dodatkowy koszt prawdopodobnie nie będzie przeszkodą w interpretacji
wyników.
Jeżeli martwi ciebie zawartość cache, to znowu trzeba siebie zapytać, co
się tak na prawdę mierzy. Jeżeli chodzi o samą wydajność algorytmu, to czas
dostępu do pamięci nie powinien mieć znaczenia, bo nie wynika on z samej
konstrukcji algorytmu.
Jeżeli ten cache ci jednak przeszkadza, to oczywiście też da się to
rozwiązać, znowu zależy to od konkretnego zagadnienia.
Możesz posługiwać się np. danymi większymi niż cache i w ten sposób
zapewnić sobie, że cache właściwie nie będzie używany, możesz też np.
losować dane a potem odjąć od ogólnego wyniku czas wykonania takiej samej
ilości samych losowań (wtedy powinieneś dostać dość dobre przybliżenie
samego algorytmu).
W takich przypadkach oczywiście zawsze trzeba też uważać, żeby nam
kompilator nie wyoptymalizował z kodu kawałków, które chcemy mierzyć ;)
> PS. Jak pod Win XP/7 uczynić taki pomiar obiektywny ? Jak i jakie usługi wyłączyć ?
Mogę wyłączyć firewall, antywirusa, wszystkie
> możliwe procesy w msconfig, odłączę kom od sieci, ale to raczej mało. Jak zrobić
żeby win na czas pomiarów nie robił NIC dodatkowego
> a przynajmniej jak najmniej ??? (Na pewno rozumiecie)
Raczej się nie da, natomiast wykonując odpowiednio dużą ilość powtórzeń
wyeliminujesz w znacznej mierze znaczną ilość takich problemów.
Ps. tak jak napisał Paweł, zamiast ustalać ilość powtórzeń, lepiej ustalić
całkowity czas testu.
--
Pozdrawiam
Zbyszek Malec
Następne wpisy z tego wątku
- 10.05.11 06:57 Bronek Kozicki
- 10.05.11 07:08 Bronek Kozicki
- 10.05.11 11:38 Mariusz Marszałkowski
- 10.05.11 11:48 Paweł Kierski
- 10.05.11 21:52 Zbigniew Malec
- 12.05.11 12:36 Mariusz Marszałkowski
- 12.05.11 12:37 Mariusz Marszałkowski
- 14.05.11 12:19 Sasquatch
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-20 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-20 czyste powietrze
- 2024-12-20 Katowice => Analyst in the Trade Development department (experience wi
- 2024-12-20 Opole => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-12-20 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-20 Rzeszów => International Freight Forwarder <=
- 2024-12-20 Katowice => Key Account Manager (ERP) <=
- 2024-12-20 Ekstradycja
- 2024-12-20 Mikroskop 3D
- 2024-12-20 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-20 Warszawa => Analityk w dziale Trade Development (doświadczenie z Powe
- 2024-12-20 Warszawa => Full Stack .Net Engineer <=
- 2024-12-20 Warszawa => Programista Full Stack .Net <=
- 2024-12-19 Kamerka sam. na tył
- 2024-12-20 Jak być bezpiecznym z Li-Ion?