Author: Remi Meier <[email protected]>
Branch:
Changeset: r274:0ff2a5c67f95
Date: 2014-08-19 13:26 +0200
http://bitbucket.org/pypy/benchmarks/changeset/0ff2a5c67f95/
Log: removing weird use of atomic in quick_sort.py (actually faster now
without it)
diff --git a/multithread/quick_sort/quick_sort.py
b/multithread/quick_sort/quick_sort.py
--- a/multithread/quick_sort/quick_sort.py
+++ b/multithread/quick_sort/quick_sort.py
@@ -8,6 +8,7 @@
atomic, Future, set_thread_pool, ThreadPool,
hint_commit_soon, print_abort_info)
+
import itertools
from collections import deque
@@ -50,59 +51,52 @@
l = l0
r = l + n - 1
while l <= r:
- with atomic:
- xl = xs[l]
- if xl < pivot:
- l += 1
- continue
- xr = xs[r]
- if xr > pivot:
- r -= 1
- continue
- xs[l], xs[r] = xr, xl
+ xl = xs[l]
+ if xl < pivot:
l += 1
+ continue
+ xr = xs[r]
+ if xr > pivot:
r -= 1
+ continue
+ xs[l], xs[r] = xr, xl
+ l += 1
+ r -= 1
fs = []
- # only start futures on a single level:
- do_futures = level == 4
+ do_futures = level >= 4
largs = (xs, l0, r - l0 + 1, level+1)
rargs = (xs, l, l0 + n - l, level+1)
leftf, rightf = False, False
if do_futures:
- if largs[2] > 2000:
+ if largs[2] > 1500:
fs.append(Future(qsort_f, *largs))
leftf = True
- if rargs[2] > 2000:
+ if rargs[2] > 1500:
fs.append(Future(qsort_f, *rargs))
rightf = True
if not leftf:
- if level >= 4 and largs[2] < 500:
- with atomic:
- fs.extend(qsort_f(*largs))
- else:
- fs.extend(qsort_f(*largs))
+ fs.extend(qsort_f(*largs))
if not rightf:
- if level >= 4 and rargs[2] < 500:
- with atomic:
- fs.extend(qsort_f(*rargs))
- else:
- fs.extend(qsort_f(*rargs))
+ fs.extend(qsort_f(*rargs))
#print_abort_info(0.0000001)
return fs
def wait_for_futures(fs):
+ c = 0
while fs:
f = fs.pop()
fs.extend(f())
+ c += 1
+ print "Futures:", c
-def run(threads=2, n=20000):
+def run(threads=2, n=60000):
threads = int(threads)
n = int(n)
@@ -110,11 +104,10 @@
to_sort = range(n)
t = 0
- for i in range(20):
- with atomic:
- random.seed(i)
- random.shuffle(to_sort)
- s = deque(to_sort)
+ for i in range(5):
+ random.seed(i+32)
+ random.shuffle(to_sort)
+ s = deque(to_sort)
# qsort(s, 0, len(s))
t -= time.time()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit