Turbo vs. Non-Turbo
You may be thinking "but does Turbo REALLY make a difference?" Here are some framerate comparisons of different ways to implement the sushi conveyor belt animations on the bar displays. The same bitmap graphics were used in each demo.
OnDiskBitmap is built into the core in displayio, making it one of the easiest methods for loading graphics in CircuitPython but also the slowest. The performance was less than 1 FPS (reading out 0 FPS) and you can see in the GIF that it doesn't even appear that the plates of sushi are moving once the initial belt loads.
code.py output: bar320x820: 820x320 landscape, panel refresh 45 Hz 6 plates opened in 0.01 s 7 slots, belt loop 1148 px 0 fps, update 366 us, refresh 16404510 us 0 fps, update 335 us, refresh 4784912 us 0 fps, update 335 us, refresh 4786468 us 0 fps, update 396 us, refresh 4785736 us
The ImageLoad library loads bitmaps into memory and is faster than OnDiskBitmap. However, it only clocks in at about 4 FPS.
code.py output: bar320x820: 820x320 landscape, panel refresh 45 Hz 6 plates loaded in 0.18 s 7 slots, belt loop 1148 px 4 fps, update 332 us, refresh 244364 us 4 fps, update 318 us, refresh 218458 us 4 fps, update 328 us, refresh 218360 us
The Turbo version (with the REPL included in the GIF to prove its running CircuitPython) clocks in at a super speedy 45 FPS on average. So yes, Turbo can increase performance by quite a bit. If you have any graphics projects that didn't work quite how you wanted them to in CircuitPython, it may be time to revisit!
code.py output: bar320x820: 320x820, row stride 320 px, first pixel 0, panel refresh 45 Hz 6 plates on 135x164 tiles, loaded in 0.46 s 6 slots, belt loop 984 px 45 fps, draw 15298 us, refresh 258 us 45 fps, draw 15292 us, refresh 262 us 45 fps, draw 15286 us, refresh 257 us 45 fps, draw 15303 us, refresh 259 us
Page last edited October 02, 2026
Text editor powered by tinymce.