[python] Replace print operator with print() function for python3 compatibility
[WebKit-https.git] / PerformanceTests / StitchMarker / README.md
1 # Stitch Marker: Threading Benchmarks
2
3 > In crochet, a stitch marker is a mnemonic device used to distinguish important
4 > locations on a work in progress. Crochet patterns have a mathematical basis,
5 > so stitch markers serve as a visual reference that takes the place of
6 > continuous stitch counting and reduces a crocheter's error rate.
7
8 Stitch Marker is a collection of threading benchmarks. It measures an abstract
9 machine's low-level capabilities for atomic instructions, higher-level waiting,
10 and general scalability under contention. It collects state-of-the-art
11 approaches to locking and lock-free code as well as older approaches, and a few
12 naive ones because in the real world everyone loses a stitch or two from time to
13 time. The point isn't to compare different lock implementations, or fancy
14 lock-free algorithms, it's rather to compare how they lower onto different
15 (virtual) ISAs.
16
17
18 # Benchmarks
19
20 ## FMJS Litmus
21
22 * Author: Cristian Mattarei
23 * Benchmark: [FMJS EMME](https://github.com/FMJS/EMME) litmus tests
24 * Version: FIXME
25 * Note: FIXME once we have a version which can target WebAssembly
26
27 These tests define the boundary of correctness for the JavaScript
28 SharedArrayBuffer memory model, which WebAssembly mostly re-uses. The tests
29 themselves are probabilistic in that the programs are run and their outcome is
30 validated against a list of known-allowed outcomes. Running the tests many times
31 will, over time, find any implementation flaws.
32
33 Running these tests in a loop has attractive properties typical microbenchmarks
34 do not have: it validates that an implementation can perform as fast as possible
35 at the boundary of correctness, but no faster. By definition this microbenchmark
36 *cannot* be gamed because doing so out cause it to fail.
37
38
39 ## folly
40
41 * Author: Facebook
42 * Repository: [folly](https://github.com/facebook/folly.git)
43 * Version: `45245cb293e3c61deb8b952956507b62e88b0cf9`
44
45 Facebook's folly library has multiple classes related to concurrency and
46 parallelism, and benchmark many of them.
47
48
49 ## ogiroux
50
51 * Author: Olivier Giroux
52 * Benchmark: [Semaphore C++ standard proposal](https://github.com/ogiroux/semaphore)
53 * Version: `8b2c4ea06952084913ae18d6bb66b0a957d96cd4`
54
55 Code and benchmark for a C++ standards committee proposal adding a
56 high-performance semaphore class to C++.
57
58
59 ## ck
60
61 * Author: Samy Al Bahra
62 * Benchmark: [concurrency kit](https://github.com/concurrencykit/ck)
63 * Version: `0d1e86d18ee58534bea976489276d75053279100`
64
65 Concurrency primitives, safe memory reclamation mechanisms and non-blocking data
66 structures for the research, design and implementation of high performance
67 concurrent systems.
68
69
70 ## WTF
71
72 * Author: Filip Jerzy Pizło
73 * benchmark: [WebKit Template Framework lock benchmarks](https://trac.webkit.org/browser/webkit/trunk/Source/WTF/benchmarks)
74 * Version: `r220151`