5

Benchmarking of the Pi 4 using the Python GPIO Zero library shows a significant increase in the frequency of toggling a GPIO pin on and off compared to previous models. This result is attributed to the higher CPU speed.

enter image description here source

Other benchmarks, e.g. Raspberry Pi 2 vs. 1 GPIO Benchmark however show a large range of results depending on the language / library. These numbers are substantially higher than those reported for the Python GPIO Zero library.

How does the Pi 4 GPIO perform using the different libraries (with a focus on C and the respective Python wrappers but other languages are also welcome)?

2
  • Every library and language will be different. Are you asking us to benchmark them all for you? If you want to know how fast the hardware can toggle then you have to look at the specs and my guess is that no library in a general purpose OS will get even close to that speed due to all the overhead they add. Sep 30 '20 at 16:04
  • 1
    @GoswinvonBrederlow nobody is forcing you to provide answers or contribute any content here, it is in fact completely up to you. So no, I am not asking you to benchmark any or all of them. If someone, however, has done any experiments to that end and is willing to post an answer that would be appreciated. After all that is the purpose of an Q&A.
    – Ghanima
    Sep 30 '20 at 21:04
1

May not be a complete answer to your question but useful to know.

If you really need fast GPIO or GPIO which is "real time" (meaning that you can guarantee, for example, how long a signal stays high / goes low for, then you should not be using a non-RTOS (Real Time OS) device, such as a Raspberry Pi with Linux kernel. (Or if you need particularly "regular" [in time] signals, such as those used for clock signals, which you cannot achieve with a non-RTOS device.)

While there are "real time OS" kernels available for Linux, this is still only a "regular" linux kernel with higher rate of context switching.

If you need higher GPIO performance you have two options:

Use something like SPI interface on the Pi or I2C. (Or even UART.) These (probably) have specific hardware circuitry to support higher rates of data transfer than can be achieved with just general purpose IO which is slow.

Your alternatives to this are:

  • Use a microcontroller, which is a realtime device.

  • Use something like an FPGA, which is programmable digital logic and is not only realtime but also a truly parallel IO device.

I suspect you are in a similar situation to myself about 6-7 years ago where I worked on a project involving R-Pi's and I was not able to get high enough rates of IO from the GPIO to interface with things like ADCs. (Even at audio frequencies.)

0

I'd expect the speeds to be about the same; any difference would be minuscule and barely noticeable for most applications. C is probably the best for controlling pins, though.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.