Sovelluksen suunnittelun aikana sinun on tiedettävä, mitä odottaa SBC:ltä laskentanopeuden suhteen, jotta voit suunnitella sovelluksen, joka pystyy käsittelemään kaikki tulevat tiedot.
Tässä opetusohjelmassa esittelemme menetelmän SBC-suorituskyvyn mittaamiseen eri tehtävissä ja sen ekstrapoloimiseksi sovelluksesi kokoon.
Koodin mittaaminen
Koodin mittaamiseen käytämme yksinkertaisia toimintoja, jotka laskevat tarvittavan ajan tavujoukon lähettämiseen tai vastaanottamiseen. Näillä tiedoilla meillä on tarpeeksi laskea suorittimen käyttö ja sovelluksen koko.
Alla annamme esimerkin GPS-kirjoitustoimintojen vertailuun. Se yksinkertaisesti lähettää valetiedot GPS:ään ja mittaa sen ajan. Palautusarvon yksiköt ovat [tavua/sekunti]
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
tulokset
| 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] |
Prosessorin käytön laskenta
Kuten taulukosta näkyy, SBC voi lähettää 88 [KB/s] GPS:lle käyttämällä 100 % CPU:ta. Se tarkoittaa myös, että jos sovelluksesi lähettää 8.8 [KB/s] GPS:ään, se käyttää 10 % suorittimesta.
Samaa ideaa voidaan soveltaa mihin tahansa sovellukseen, jotta saat likimääräisen arvion suorittimen käytöstä ja sovelluksesi koon oikeasta koosta.