Jak sprawdzić szybkość obliczeniową komputera?

Witam. Zastanawia mnie czy da się jakoś, może jakimś wzorem, sprawdzić szybkość obliczeniową komputera w zależności od wielkości problemu obliczeniowego? Nie chodzi mi tu o benchamrki tylko konkretne czasy wykonania zadania. Np. mamy wygenerować jakaś symulację czy wyliczyć 10000 element ciągu Fibonachciego. wiadomo więc, ,ze na komputerze z prockiem 1GHz 1-core wykona się to wolniej niż na procesorze 3GHz i7. Pytanie jak zmierzyć i przewidzieć czas wykonania takiego zadania? Czy istnieją jakieś programy symulujące takie rzeczy?

jest masa takowego softu, np taki superpi (na forum jest kilka tematów, gdzie użytkownicy sobie porównują wyniki)

Albo program Winrtgen (generacja tęczowych tablic do łamania haseł): http://www.oxid.it/downloads/winrtgen.zip

Bardziej chodzi mi o badanie teoretycznego czasu wykonywania/rozwiązywania zadania na rożnych procesorach.

Można sobie samemu napisać taki prosty programik - może on nawet być mocno nieoptymalny - i będzie można porównywać czas jego pracy na różnych komputerach. Z tym, że prosto jest napisać takie coś na 1 procesor/rdzeń/wątek, gdybyś chciał to rozszerzyć na więcej rdzeni/wątków, to już wymaga więcej doświadczenia - stąd też różne testy/benchmarki, np. mierzące szybkość kompresji pliku (zip), kodowania obrazu czy renderowania sceny 3D.

O właśnie przykład takiego benchmarka chciałbym wiedzieć.

To co chce policzyć zapewne mógłbym zrobić “na kartce”. Nie wiem jednak jakie parametry wziąć pod uwagę? Skąd wiedzieć czy dany procek poradzi sobie z jakimś problemem obliczeniowym np. w 3 lub 7 minut.

Przykładowo (darmowy) program 7-Zip (http://www.dobreprogramy.pl/7Zip,Program,Windows,12559.html), jak po uruchomisz jego graficzny Manager, w menu Narzędzia ma pozycję Test wydajności. :slight_smile:

Innym programem testującym wydajność procesora oraz grafiki 3D jest Cinebench (http://www.dobreprogramy.pl/Cinebench,P … 23774.html) - też darmowy.

To nadal są zwykle benchmarki, które mogę odpalać na komputerze - mi zależy na bardziej ogólnym wzorze. Na razie przychodzą mi do głowy 2 opcji mierzenia czasu wykonywania zadania przez dowolny procesor w zależności od znajomości jego parametrów:

  1. przemnożenie podanej przez producenta ilości FLOPS przez bitowość komputera - lecz nie wiem czy dobrze rozumuję, czy bitowość jest składnikiem FLOPS?

  2. lub pomnożyć częstotliwość przez liczbę rdzeni, a następnie podzielić to wielkość bloku pamięci?

potem uwzględnić wielkość danych do obrobki

Czy myślcie, że na tej podstawie mogę wyznaczyć teoretyczną/zbliżoną czasochłonność obliczeń?

To nie jest takie proste, bo szybkość obliczeń zależy od:

  • częstotliwości procesora;

  • liczby rdzeni/wątków;

  • wielkości pamięci cache;

  • wielkości oraz szybkości pamięci RAM;

  • konstrukcji użytego programu (czy jest wrażliwy na powyższe);

  • generacji procesora.

I pewnie jeszcze kilku zmiennych. Po to są benchmarki, bo gdyby był wzór, takie testy byłyby niepotrzebne. :stuck_out_tongue: