Током дизајна апликације, морате да знате шта да очекујете од СБЦ-а у погледу брзине рачунања да бисте дизајнирали апликацију која може да обрађује све долазеће податке.
У овом туторијалу представљамо метод за мерење перформанси СБЦ-а у различитим задацима и како га екстраполирати на величину ваше апликације.
Мерење кода
За мерење кода користимо једноставне функције које израчунавају потребно време за слање или примање гомиле бајтова. Са тим информацијама имамо довољно да израчунамо употребу ЦПУ-а и величину апликације.
У наставку вам дајемо пример за мерење ГПС операција писања. Једноставно шаље лажне податке ГПС-у и мери његово време. Повратна вредност има јединице од [бајтова/секунди]
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
Резултати
| 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] |
Прорачун употребе ЦПУ-а
Као што је приказано у табели, СБЦ може послати 88 [КБ/с] ГПС-у, користећи 100% ЦПУ-а. То такође значи да ако ваша апликација шаље 8.8 [КБ/с] ГПС-у, она користи 10% ЦПУ-а.
Иста идеја се може применити на било коју апликацију да бисте добили апроксимацију употребе ЦПУ-а и исправну величину ваше апликације.
