Messages in this thread | | | From | Felipe Alfaro Solana <> | Subject | Re: [patch 1/13] Qsort | Date | Sun, 23 Jan 2005 03:03:32 +0100 |
| |
On 22 Jan 2005, at 22:00, vlobanov wrote:
> Hi, > > I was just reading over the patch, and had a quick question/comment > upon > the SWAP macro defined below. I think it's possible to do a tiny bit > better (better, of course, being subjective), as follows: > > #define SWAP(a, b, size) \ > do { \ > register size_t __size = (size); \ > register char * __a = (a), * __b = (b); \ > do { \ > *__a ^= *__b; \ > *__b ^= *__a; \ > *__a ^= *__b; \ > __a++; \ > __b++; \ > } while ((--__size) > 0); \ > } while (0) > > What do you think? :)
AFAIK, XOR is quite expensive on IA32 when compared to simple MOV operatings. Also, since the original patch uses 3 MOVs to perform the swapping, and your version uses 3 XOR operations, I don't see any gains.
Am I missing something?
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |