[PATCH] lib: Add 64 bit speedup to lib/sort.c
From: David Binderman
Date: Wed Aug 06 2014 - 17:00:34 EST
Hello there,
The following patch adds an obvious speedup for 64 bit data to lib/sort.c
In tests on a 64 bit machine, the code at the end of the lib/sort.c
file executed some 40% faster.
The patch is against kernel version 3.16-rc6
Regards
David Binderman
Signed-off-by: David Binderman <dcb314@xxxxxxxxxxx>
--- linux-3.16-rc6/lib/sort.c.old 2014-07-23 16:47:59.120299115 +0100
+++ linux-3.16-rc6/lib/sort.c 2014-07-23 17:33:21.405251903 +0100
@@ -16,6 +16,13 @@ static void u32_swap(void *a, void *b, i
*(u32 *)b = t;
}
+static void u64_swap(void *a, void *b, int size)
+{
+ u64 t = *(u64 *)a;
+ *(u64 *)a = *(u64 *)b;
+ *(u64 *)b = t;
+}
+
static void generic_swap(void *a, void *b, int size)
{
char t;
@@ -51,8 +58,14 @@ void sort(void *base, size_t num, size_t
/* pre-scale counters for performance */
int i = (num/2 - 1) * size, n = num * size, c, r;
- if (!swap_func)
- swap_func = (size == 4 ? u32_swap : generic_swap);
+ if (!swap_func) {
+ if (size == 4)
+ swap_func = u32_swap;
+ else if (size == 8)
+ swap_func = u64_swap;
+ else
+ swap_func = generic_swap;
+ }
/* heapify */
for ( ; i>= 0; i -= size) {
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/