Znaleziono 2 wyniki

autor: tuxcnc
12 wrz 2021, 19:42
Forum: Arduino, Raspberry pi i inne systemy mikroprocesorowe
Temat: Arduino_prime_number_benchmark
Odpowiedzi: 5
Odsłony: 1778

Re: Arduino_prime_number_benchmark

Avalyah pisze:
12 wrz 2021, 19:13
takie zastosowanie zostało użyte w całej historii wszechświata tylko dwa razy
Zupełnie możliwe, bo nikt przy zdrowych zmysłach nie będzie używał mikrokontrolera do wyznaczania liczb pierwszych.
Jednak takie testy dają ogólne pojęcie o możliwościach danego sprzętu, a konieczność przeliczenia danych zanim nadejdą nowe zdarza się dość często.
Myślę że warto było zmarnować trochę czasu na stwierdzenie że procesor droższy o 5 PLN potrafi coś obliczyć dwieście razy szybciej, co zapewne nie jest faktem powszechnie znanym.
autor: tuxcnc
12 wrz 2021, 18:37
Forum: Arduino, Raspberry pi i inne systemy mikroprocesorowe
Temat: Arduino_prime_number_benchmark
Odpowiedzi: 5
Odsłony: 1778

Arduino_prime_number_benchmark

Fajny benchmark znalazłem: https://github.com/SuperUserNameMan/Ard ... _benchmark

Nie będę ukrywał, że wybrałem go złośliwie i z premedytacją, co nie zmienia faktu że daje prawdziwe wyniki.

Otóż są programy, których prędkość wykonania jest proporcjonalna do częstotliwości zegara, na przykład miganie LED-em, ale są też takie, które wykonują skomplikowane obliczenia i ważne są wtedy inne cechy procesora, jak długość słowa, lista rozkazów, czy obecność koprocesora...

Tutaj mamy taki właśnie przykład, procesor szuka kolejnych liczb pierwszych, czyli dużo liczy.
Oczywiście należy się spodziewać że 32-bitowy procesor będzie kilka razy szybszy od 8-bitowego, ale wyniki mnie zaskoczyły.

Do testu poszły trzy mikroprocesory z najniższej półki, to znaczy takie, z którymi płytki można kupić na Aliexpress poniżej 20 PLN z wliczoną dostawą.
Były to ESP32-WROOM-32D, STM32F401CCU6 i ATMega328p. Mam jeszcze nowość, LGT8F328P, ale sobie odpuściłem, bo to tylko dwa razy szybsza ATMega, więc można sobie prosto przeliczyć.
Na wszystkie procesory program był kompilowany w środowisku ArduinoIDE.
Zwykle przy przenoszeniu na inny sprzęt wychodzą różne jaja, szczególnie niekompatybilność bibliotek, ale ten program okazał się chlubnym wyjątkiem i kompilował się bez oporów.
Wprowadziłem tylko jedną zmianę, zamiast 10 tysięcy kazałem mu szukać 30 tysięcy liczb pierwszych, żeby się nie wykonywał zbyt szybko.

Jak już wspomniałem, wyniki mnie zaskoczyły, bo spodziewałem się dużej różnicy, ale nie przepaści.
Refleksję polecam szczególnie atmegowym sekciarzom, którzy do kropli krwi ostatniej walczyć będą o udowodnienie, że na ATMega328p i Bascomie da się zrobić dowolnie wszystko...


================================

* ESP32-WROOM-32D

F_CPU value: 240000000
Clock cycles per µsecond: 240
Prime calculation starting.

Found 30000 primes in 3 seconds
Highest prime found was: 350377

================================

* STM32F401CCU6

F_CPU value: 84000000
Clock cycles per µsecond: 84
Prime calculation starting.

Found 30000 primes in 7 seconds
Highest prime found was: 350377

================================

* ATMega328p

F_CPU value: 16000000
Clock cycles per µsecond: 16
CLKPR : 0 -> 0
Prime calculation starting.

Found 30000 primes in 641 seconds
Highest prime found was: 350377

=================================

Wróć do „Arduino_prime_number_benchmark”