在应用程序设计期间,您需要了解 SBC 在计算速度方面的期望,以设计一个可以处理所有传入数据的应用程序。
在本教程中,我们介绍了一种测量不同任务中 SBC 性能的方法,以及如何推断它以调整应用程序的大小。
测量代码
为了测量代码,我们使用简单的函数来计算发送或接收一堆字节所需的时间。 有了这些信息,我们就有足够的能力来计算 CPU 使用率和应用程序的大小。
下面我们给大家举一个例子来进行基准测试 全球定位系统 写操作。它只是将虚拟数据发送到 GPS 并测量其时间。返回值的单位为[字节/秒]
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] |
CPU使用率计算
如表所示,SBC 可以使用 88% 的 CPU 向 GPS 发送 100[KB/s]。 这也意味着如果您的应用程序向 GPS 发送 8.8[KB/s] 的速度,它会使用 10% 的 CPU。
相同的想法可以应用于任何应用程序,以获取 CPU 使用率的近似值并正确调整应用程序的大小。