Thread (16 messages) 16 messages, 4 authors, 2005-08-31

Re: [PATCH 1/1 2.6.13] framebuffer: bit_putcs() optimization for 8x* fonts

From: Roman Zippel <hidden>
Date: 2005-08-30 19:14:27
Also in: lkml

Hi,

On Tue, 30 Aug 2005, Knut Petersen wrote:
quoted
Probably you can make it even faster by avoiding the multiplication, like

   unsigned int offset = 0;
   for (i = 0; i < image.height; i++) {
	dst[offset] = src[i];
	offset += pitch;
   }
More than two decades ago I learned to avoid mul and imul. Use shifts, add and
lea instead,
that was the credo those days. The name of the game was CP/M 80/86, a86, d86
and ddt ;-)

But let´s get serious again.

Your proposed change of the patch results in a 21 ms performance decrease on
my system.
Yes, I do know that this is hard to believe. I tested a similar variation
before, and the results
were even worse.
Could you try the patch below, for a few extra cycles you might want to 
make it an inline function.

bye, Roman

Index: linux-2.6/drivers/video/fbmem.c
===================================================================
--- linux-2.6.orig/drivers/video/fbmem.c	2005-08-30 01:55:18.000000000 +0200
+++ linux-2.6/drivers/video/fbmem.c	2005-08-30 21:10:25.705462837 +0200
@@ -82,11 +82,11 @@ void fb_pad_aligned_buffer(u8 *dst, u32 
 {
 	int i, j;
 
+	d_pitch -= s_pitch;
 	for (i = height; i--; ) {
 		/* s_pitch is a few bytes at the most, memcpy is suboptimal */
 		for (j = 0; j < s_pitch; j++)
-			dst[j] = src[j];
-		src += s_pitch;
+			*dst++ = *src++;
 		dst += d_pitch;
 	}
 }
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help