Tijekom dizajna aplikacije morate znati što možete očekivati od SBC-a u smislu brzine računanja kako biste dizajnirali aplikaciju koja može obraditi sve dolazeće podatke.
U ovom vodiču predstavljamo metodu za mjerenje performansi SBC-a u različitim zadacima i kako to ekstrapolirati na veličinu vaše aplikacije.
Mjerenje koda
Za mjerenje koda koristimo jednostavne funkcije koje izračunavaju potrebno vrijeme za slanje ili primanje hrpe bajtova. S tim informacijama imamo dovoljno za izračunavanje upotrebe CPU-a i veličinu aplikacije.
U nastavku vam dajemo primjer za usporedbu GPS operacija pisanja. Jednostavno šalje lažne podatke GPS-u i mjeri svoje vrijeme. Povratna vrijednost ima jedinice [bajtova/sekundi]
def benchmark_gps_write( chunk=64, N=128, baudrate=921600 ): gps = sbc.Gps( 1, baudrate ) buf = bytearray( chunk ) t0 = time.ticks_us() for i in range( N ): # send len(buf) bytes N times gps.write( buf ) t1 = time.ticks_us() dt_s = time.ticks_diff( t1, t0 )*1e-6 # Compute time size_bytes = chunk*N return size_bytes/dt_s
Rezultati
Task | Result | Units |
---|---|---|
ubx_parser | 3.25e+04 | [B/s] |
ubx_builder | 1.09e+05 | [B/s] |
NMEA_parser | 1.47e+04 | [B/s] |
flash_write | 1.82e+04 | [B/s] |
flash_read | 4.93e+05 | [B/s] |
sd_write | 4.46e+04 | [B/s] |
sd_read | 4.26e+05 | [B/s] |
gps_write | 8.85e+04 | [B/s] |
imu_read | 4.68e+02 | [Samples/s] |
ahrs_update | 1.01e+05 | [Calls/s] |
gc_collect | 4.89e+02 | [Calls/s] |
printf | 7.67e+05 | [B/s] |
Izračun upotrebe CPU-a
Kao što je prikazano u tablici, SBC može poslati 88 [KB/s] GPS-u, koristeći 100% CPU-a. To također znači da ako vaša aplikacija šalje 8.8 [KB/s] GPS-u, koristi 10% CPU-a.
Ista se ideja može primijeniti na bilo koju aplikaciju kako biste dobili približnu korištenost CPU-a i ispravno odredili veličinu aplikacije.