Deterministyczny benchmark

0

Czy jest jakiś sposób na zmierzenie prędkości działania programu w sposób który zawsze da jednakowe wyniki?
Przykładowo jakaś pełna emulacja sprzętu, zegaru systemowego i wywołań IO tak żeby wynik dostać w postaci ilości cyklów lub upływu wirtualnego czasu. Ok jeśli taki test wykonywałby się kilkadziesiąt razy dłużej czasu rzeczywistego.

Zastosowaniem mogłoby być porównywanie szybkości algorytmów wykonanych przez różnych użytkowników na całkiem różnym sprzęcie z jednoznacznym wynikiem (czasem przez niedokładność pomiarów nie da się porównać który algorytm wygrał nawet testując na tej samej platformie), lub przykładowo automatyczne zmierzenie prędkości działania programu na wirtualce w procesie CI i generowanie raportów lub alertów gdy jakiś commit powoduje degradację wydajności.
Normalnie nawet przy różnicy wydajności rzędu 20% nie da się tego zautomatyzować bo wirtualki mogą mieć różne obciążenie i konfigurację, a testy nawet odpalone ręcznie przez różne czynniki zewnętrzne trzeba wywołać wielokrotnie żeby uzyskać średnią

1

Dokładnie to robi Valgrind :-)

1

A tylko troszkę mniej dokładnie ale za to bez zauważalnego narzutu - perf.

1 użytkowników online, w tym zalogowanych: 0, gości: 1