I am developing an application on an LPC54102 (100 MHz 32 bit MCU) that makes use of FreeRTOS. I am planning on using FreeRTOS queues for IPC between application tasks. Has any performance profiling for FreeRTOS queues been publicly documented? I am interested, for example, in metrics like messages/second. Anyone have experience pushing 1000s of messages (assume small messages: < 100 bytes) through a queue (assume application message processing is low overhead) a second on a micro like the LPC54102?
The actual performance will be very dependent on the processor and the compiler. One significant cost is that, by the basic design, each message is copied into and then out of the Queue. So 1000 messages of 100 bytes means you have just copied 200,000 bytes of memory.
Sometimes it makes more sense to pass POINTERS to the messages, and have a pool of messages that you pass around, which results much less data needing to be copied.
If the transfers are always a single task to a single task, then MessageBuffers can be a bit more efficient, they still need to copy the data, but have less overhead since they don’t need the same arbitration on the endpoints.