Moja sytuacja
Piszę artykuł prezentujący moduł oprogramowania, który opracowałem i chcę porównać jego środowisko wykonawcze z innymi modułami dla tego samego zadania. Zdaję sobie sprawę z wad eksperymentów w środowisku uruchomieniowym , ale proszę założyć, biorąc pod uwagę, że w moim przypadku nie można tego obejść. (Potrafię teoretycznie wydedukować niektóre właściwości, ale nie wszystko to wystarcza).
Konkretne scenariusze, których chcę użyć do testów porównawczych, mają dwa parametry: złożoność problemu i losowe ziarno które określa szczegółowy problem. Głównie chcę pokazać zależność od . Po wstępnych badaniach i teorii wpływ na środowisko wykonawcze jest niewielki lub nieistotny. Wykonanie pojedynczego zadania zajmuje najwyżej dziesięć minut.r n r
Rzeczywiste pytanie
Szukam jakiejś powszechnie akceptowanej lub opublikowanej procedury przeprowadzania takich eksperymentów lub przynajmniej listy typowych pułapek (najlepiej opublikowanych).
Co znalazłem do tej pory
Nic. Wyszukiwania internetowe ujawniają różnego rodzaju niepowiązane wyniki, ale wtedy mogę nie używać właściwej terminologii. Uwzględnienie minimum słowa kluczowego , które uważam za dobry standard (patrz poniżej), również nie pomogło.
Jak bym to zrobił
Przeprowadź wszystkie eksperymenty na tym samym komputerze z potencjalnie zakłócającym oprogramowaniem, takim jak GUI, wyłączonym w miarę możliwości.
Poddaj wszystkie moduły tej samej selekcji scenariuszy, tj. Tym samym i .r
Dla każdego scenariusza przetestuj różne moduły bezpośrednio jeden za drugim w losowej kolejności. Innymi słowy, pętla między różnymi modułami jest najbardziej wewnętrzna. Powinno to uniknąć stronniczości różnych modułów ze względu na powolne wahania wydajności maszyny (np. Z powodu zmian temperatury). Losowa kolejność powinna unikać stronniczości dzięki takim efektom, jak buforowanie lub testowanie jednego modułu zawsze po tym samym.
Dla każdego weź minimalny czas działania dla kilku scenariuszy z różnymi ziarnami jako punktem odniesienia. Powinno to uniknąć stronniczości na różnych modułach z powodu krótkotrwałych wahań wydajności maszyny, które powodują, że poszczególne przebiegi są wyjątkowo złe.
Odpowiedzi:
„Przewodnik po algorytmach eksperymentalnych” CC McGeocha jest dobrym odniesieniem
źródło
Oprócz upływu czasu dla każdego uruchomienia należy zgłosić sekundy trybu użytkownika i systemu oraz całkowitą liczbę pakietów IP i całkowitą liczbę operacji we / wy dysku, choćby po to, aby sprawdzić, czy niektóre liczby są stale „niskie” i mają nieistotny wpływ na upływający czas.
Na https://wiki.freebsd.org/BenchmarkAdvice PHK i inni oferują dobre porady, w tym
źródło