Při návrhu aplikace musíte vědět, co od SBC očekávat, pokud jde o rychlost výpočtu, abyste mohli navrhnout aplikaci, která dokáže zpracovat všechna přicházející data.
V tomto tutoriálu představujeme metodu měření výkonu SBC v různých úlohách a jak ji extrapolovat na velikost vaší aplikace.
Měření kódu
K měření kódu používáme jednoduché funkce, které počítají čas potřebný k odeslání nebo přijetí hromady bajtů. S těmito informacemi máme dostatek pro výpočet využití CPU a velikosti aplikace.
Níže uvádíme příklad pro benchmark GPS operace zápisu. Jednoduše odešle fiktivní data do GPS a změří svůj čas. Vrácená hodnota má jednotky [bajty/sekundu]
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
výsledky
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] |
výpočet využití CPU
Jak je uvedeno v tabulce, SBC může poslat 88[KB/s] do GPS při využití 100% CPU. To také znamená, že pokud vaše aplikace odešle 8.8 [KB/s] do GPS, využívá 10 % CPU.
Stejnou myšlenku lze aplikovat na jakoukoli aplikaci, abyste získali přibližné využití CPU a správnou velikost vaší aplikace.