I was testing a few different tools to create a simple boot splash screen animation for a framebuffer device on an embedded computer. All of the tools were adding a big performance penalty. Most took about 20% of the CPU, which corresponded to an extra 25 seconds to the boot time. I tested ImageMagick, fbi, and fbv.
I decided to convert all my animations into the raw, uncompressed native format of the framebuffer device. I wanted to see how much CPU I would use by just running a shell script loop and dumping the images to the framebuffer device. The results were impressive. I took the splash animation from 20% CPU to less than 1%. Even running a free loop with no sleep delay I was taking around 3% of the CPU. I checked the over-all system CPU usage to make sure that my script wasn't somehow causing the load to show up under the kernel load.
The only downside is that the storage requirements jumped from 344K for PNG images to 19M for uncompressed raw framebuffer files.
I tried gzipping each raw file and then using zcat in my script. The performance went to about 15% of the CPU. I also tried `lzop` and I got a little better performance than zcat.