Skip to content

Benchmarks ​

All figures below are measured on real hardware, with the same benchmark suite, across every listed toolchain/RTOS combination. Compiler options are the highest optimization level, optimized for time (GCC at -O3, Keil/IAR at their highest settings).

  • Cortex-M0+ is evaluated on an STM32G071RBT6.
  • Cortex-M4 is evaluated on an STM32F429ZIT6.
  • Cortex-M7 is evaluated on an STM32H743ZIT6.
  • RV32IMAC (RISC-V) is evaluated on a CH32V307VCT6.

Flash and SRAM are guest image footprints in KiB (code + data / data + bss); all other columns are CPU clock cycles. These are typical values exercising the full system benchmark — minimum sizes seldom mean anything in practice.

Commemorative ports ​

Single-combination memorial ports: Cortex-M7 + GCC + STM32H743ZIT6.

MachineToolchainRTOSFlash (KiB)SRAM (KiB)YieldMailSemMail/ISem/IMem
Cortex-M7GCCDjyOS27.4963.381017148889218731220288
Cortex-M7GCCKLite11.6520.27291140237919649962751

Practical ports ​

Cortex-M0+ — STM32G071RBT6 ​

ToolchainRTOSFlash (KiB)SRAM (KiB)YieldMailSemMail/ISem/IMem
Keil uVision 5RMP16.713.8846578368116771572N/A
...FreeRTOS12.749.57433949102317891808843
...uC/OS-II11.866.73N/A10621039380014842638
...uC/OS-III13.638.098631117114321252156363
...RT-Thread18.698.27950158113172760246413221
IAR EWARMRMP12.383.8851187677017641642N/A
...FreeRTOS11.299.57432944107818041859944
...uC/OS-II10.626.73N/A10891067489910722737
...uC/OS-III11.898.088921154118721612189360
...RT-Thread13.158.261031168014152859258913861
GCCRMP22.722.8850788377317461680N/A
...FreeRTOS15.388.574559861108185919261012
...uC/OS-II13.085.75N/A11111090152610972876
...uC/OS-III15.387.098711144118521882246396
...RT-Thread18.577.271080175514503042269414899

Cortex-M4 — STM32F429ZIT6 ​

ToolchainRTOSFlash (KiB)SRAM (KiB)YieldMailSemMail/ISem/IMem
Keil uVision 5RMP22.7237.0633651945212781176391
...FreeRTOS14.7341.5730861277613941428527
...uC/OS-II13.097.73N/A67164723037731425
...uC/OS-III15.509.0950469171315701588196
...RT-Thread20.348.275321036824194817437307
IAR EWARMRMP14.2936.0737660255115121438403
...FreeRTOS11.4840.5731664883315921667549
...uC/OS-II10.756.73N/A70869624838241521
...uC/OS-III11.658.0860180982918521868207
...RT-Thread13.787.266121053852223120207646
GCCRMP24.2036.0741670955214341344382
...FreeRTOS15.4440.5737272688215441611724
...uC/OS-II12.486.75N/A72969326298491597
...uC/OS-III14.678.0958081284917591820227
...RT-Thread17.637.276481173893223619757764

Cortex-M7 — STM32H743ZIT6 ​

ToolchainRTOSFlash (KiB)SRAM (KiB)YieldMailSemMail/ISem/IMem
Keil uVision 5RMP22.7337.06244384370920811284
...FreeRTOS15.0641.57229494595954987347
...uC/OS-II13.357.73N/A4364451503584849
...uC/OS-III15.759.0941059059412271252141
...RT-Thread20.528.28457798651153713915197
IAR EWARMRMP14.3736.072724594121030985284
...FreeRTOS11.5040.5722052660911221109363
...uC/OS-II10.836.73N/A5415121674654938
...uC/OS-III11.708.0841159262012821313151
...RT-Thread13.857.26424829675158514415710
GCCRMP24.2936.07248476414886939283
...FreeRTOS15.2940.5722551159610201036354
...uC/OS-II12.496.75N/A4894681544569909
...uC/OS-III14.668.0940456157812161291150
...RT-Thread17.757.27465819674157014356402

RV32IMAC (RISC-V) — CH32V307VCT6 ​

ToolchainRTOSFlash (KiB)SRAM (KiB)YieldMailSemMail/ISem/IMem
GCCRMP29.6125.2932249943717191652360
...FreeRTOS17.5524.7731958063017781827440
...uC/OS-II16.286.75N/A57155925915701337
...uC/OS-III16.728.0947860661120502079182
...RT-Thread19.459.77533846701242922806003

Metric definitions ​

MetricMeaning
YieldTime to yield between different threads
MailMailbox communication time between two threads
SemSemaphore communication time between two threads
Mail/ITime to send to a mailbox from an interrupt
Sem/ITime to post to a semaphore from an interrupt
MemTime for a memory operation, e.g. allocation/free
  • Yield is N/A for uC/OS-II: with one task per priority, a yield between equal-priority threads is not a meaningful measurement.
  • Mem is N/A for RMP guests: RMP exercises its own memory subsystem outside this benchmark.
  • Context switch and interrupt response for a virtualized FreeRTOS are about 4x the bare-metal original, and still roughly 25x faster than RT-Linux — see Why Virtualization.

An official work of EDI, released into the public domain.