[pypy-commit] stmgc c7: small performance improvements thanks to cache-line alignment of locks (thanks kirma)

Remi Meier noreply at buildbot.pypy.org
Fri Jan 31 16:32:09 CET 2014


Author: Remi Meier
Branch: c7
Changeset: r700:04bbddecdb33
Date: 2014-01-31 16:32 +0100
http://bitbucket.org/pypy/stmgc/changeset/04bbddecdb33/

Log:	small performance improvements thanks to cache-line alignment of
	locks (thanks kirma)

diff --git a/c7/stmsync.c b/c7/stmsync.c
--- a/c7/stmsync.c
+++ b/c7/stmsync.c
@@ -18,10 +18,10 @@
    lock, so don't conflict with each other; when we need to do a global GC,
    we take a writer lock to "stop the world". */
 
-rwticket rw_shared_lock;        /* the "GIL" */
-rwticket rw_collection_lock;    /* for major collections */
+rwticket rw_shared_lock __attribute__((aligned(64)));        /* the "GIL" */
+rwticket rw_collection_lock __attribute__((aligned(64)));    /* for major collections */
 
-sem_t static_thread_semaphore;
+sem_t static_thread_semaphore __attribute__((aligned(64)));
 uint8_t static_threads[NB_THREADS]; /* 1 if running a pthread */
 __thread struct _thread_local1_s *pthread_tl = NULL;
 
diff --git a/duhton/Makefile b/duhton/Makefile
--- a/duhton/Makefile
+++ b/duhton/Makefile
@@ -11,11 +11,15 @@
 C7HEADERS = ../c7/*.h
 
 
-all: duhton_debug duhton
+all: duhton_debug duhton 
 
 duhton: *.c *.h $(C7SOURCES) $(C7HEADERS)
 	clang -pthread -g -O2 -o duhton *.c $(C7SOURCES) -Wall
 
+duhton_release: *.c *.h $(C7SOURCES) $(C7HEADERS)
+	clang -pthread -g -DNDEBUG -O2 -o duhton_release *.c $(C7SOURCES) -Wall
+
+
 duhton_debug: *.c *.h $(C7SOURCES) $(C7HEADERS)
 	clang -pthread -g -DDu_DEBUG -o duhton_debug *.c $(C7SOURCES) -Wall
 
diff --git a/duhton/demo/sort.duh b/duhton/demo/sort.duh
--- a/duhton/demo/sort.duh
+++ b/duhton/demo/sort.duh
@@ -77,13 +77,14 @@
   (setq half_len (/ (len xs) 2))
   (setq first (list))
   (setq second (list))
-
-  (while (< 0 (len xs))
-    (if (< 0 half_len)
-        (append first (pop xs 0))
-      (append second (pop xs 0))
+  (setq xidx 0)
+  
+  (while (< xidx (len xs))
+    (if (< xidx half_len)
+        (append first (get xs xidx))
+      (append second (get xs xidx))
       )
-    (setq half_len (- half_len 1))
+    (setq xidx (+ xidx 1))
     )
 
   (list first second)
@@ -172,7 +173,7 @@
 
 (setq current (time))
 (print (quote before-random))
-(setq cs (random_list 100000))
+(setq cs (random_list 200000))
 (print (quote time-random:) (- (time) current))
 
 ;; (print_list cs)


More information about the pypy-commit mailing list