This document is an addition to benchmark.md. Please read it first.
What follows are some timings obtained on the authors's system, and by no means they claim to be exact, absolute or reproducible: your mileage may vary.
Date: 29 June 2013
Hardware: Intel Core-i7 4770 @3.5 GHz (quad-core w/ hyper-threading), 16GB RAM
Software: Debian GNU/Linux 7.0 (x86_64), CMUCL 20d Unicode (x86), STMX 1.3.3
Note that CMUCL is stated to support "user level" threads on Linux/x86, not native threads. So don't expect performance improvements by running more than one thread... :(
Concurrent benchmarks on a 4-core CPU. They already iterate
ten million times, do not wrap them in (1m ...) .
| |||||
---|---|---|---|---|---|
Dining philosophers, load with(load "stmx/example/dining-philosophers-stmx.lisp") (load "stmx/example/dining-philosophers-hw-tx.lisp") (load "stmx/example/dining-philosophers-lock.lisp") (in-package :stmx.example{1|2|3})
| |||||
number of threads | executed code | STMX (sw transactions) | HW-TX (hw transactions) | LOCK (atomic compare-and-swap) | LOCK (bordeaux-threads mutex) |
millions transactions per second | |||||
1 thread | (dining-philosophers 1) |
0.102 | 0.194 | ||
2 threads | (dining-philosophers 2) |
0.075 | 0.108 | ||
3 threads | (dining-philosophers 3) |
0.077 | 0.116 | ||
4 threads | (dining-philosophers 4) |
0.077 | 0.122 | ||
5 threads | (dining-philosophers 5) |
0.077 | 0.124 | ||
6 threads | (dining-philosophers 6) |
0.078 | 0.127 | ||
7 threads | (dining-philosophers 7) |
0.078 | 0.128 | ||
8 threads | (dining-philosophers 8) |
0.078 | 0.130 | ||
10 threads | (dining-philosophers 10) |
0.078 | 0.132 | ||
15 threads | (dining-philosophers 15) |
0.078 | |||
20 threads | (dining-philosophers 20) |
||||
30 threads | (dining-philosophers 30) |
||||
40 threads | (dining-philosophers 40) |
||||
50 threads | (dining-philosophers 50) |
||||
100 threads | (dining-philosophers 100) |
||||
200 threads | (dining-philosophers 200) |