lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <DUB128-W44671ADCA62DEF226431E09CE00@phx.gbl>
Date:	Wed, 6 Aug 2014 20:55:16 +0000
From:	David Binderman <dcb314@...mail.com>
To:	"trivial@...nel.org" <trivial@...nel.org>
CC:	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: [PATCH] lib: Add 64 bit speedup to lib/sort.c

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@...mail.com>

--- 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@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ