Selama desain aplikasi, Anda perlu mengetahui apa yang diharapkan dari SBC dalam hal kecepatan komputasi untuk merancang aplikasi yang dapat memproses semua data yang datang.
Dalam tutorial ini kami menyajikan metode untuk mengukur kinerja SBC dalam tugas yang berbeda dan cara mengekstrapolasinya ke ukuran aplikasi Anda.
Mengukur kode
Untuk mengukur kode, kami menggunakan fungsi sederhana yang menghitung waktu yang diperlukan untuk mengirim atau menerima sekumpulan byte. Dengan info itu kami memiliki cukup untuk menghitung penggunaan CPU dan ukuran aplikasi.
Di bawah ini kami memberikan contoh untuk benchmark operasi penulisan GPS. Ini hanya mengirimkan data dummy ke GPS dan mengukur waktunya. Nilai kembalian memiliki satuan [byte/detik]
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
Hasil
| 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] |
Perhitungan penggunaan CPU
Seperti yang ditunjukkan pada tabel, SBC dapat mengirim 88[KB/s] ke GPS, menggunakan 100% CPU. Ini juga berarti bahwa jika aplikasi Anda mengirim 8.8[KB/s] ke GPS, itu menggunakan 10% dari CPU.
Ide yang sama dapat diterapkan ke aplikasi apa pun untuk mendapatkan perkiraan penggunaan CPU dan ukuran aplikasi Anda dengan benar.