Opportunity for speedup

Bobby Powers bobbypowers at gmail.com
Thu Feb 19 14:01:59 EST 2009

On Thu, Feb 19, 2009 at 1:56 PM, Wade Brainerd <wadetb at gmail.com> wrote:
> RLE (run length encoding) compresses sequences of identical pixels ("runs")
> as value/count pairs.
> So abbbbbbbbbbccc would be stored as 1a 10b 3c.
> The decompressor looks like:
> while (cur < end)
> {
>    unsigned short count = *cur++;
>    unsigned short value = *cur++;
>    while (count--)
>       *dest++ = value;
> }
> This can be faster than memcpy because you are reading significantly less
> memory than you would with memcpy, thus fewer cache misses are incurred.
> Because the startup images are mostly spans solid colors, this kind of
> compression works very well.  If that were not the case, say if there were a
> left-to-right gradient in the background, RLE would probably make things
> worse, thus you have to be careful when choosing it.
> But the smaller size on disk and in memory would probably improve
> performance in other ways as well.
> Best,
> Wade

thanks, that makes sense

More information about the Devel mailing list