===== Synchrobench ===== Synchrobench is a benchmark suite for comparing synchronization techniques. It comprises common data structures (e.g., linked list, skip list, hash table, arrays) that implement several abstractions (e.g., set, map, queue). These algorithms are implemented using fine-grained locking (spinlock, mutex), transactional memory (E-STM, TinySTM, SwissTM) or lock-free techniques (compare-and-swap). * Lock-free algorithms (e.g., harris-michael, fraser's lock-free skip-list). * Fine-grained locking algorithms (e.g., lazy linked list, optimistic skip list). * Transactions-based algorithms (e.g., speculation-friendly binary search tree). Synchrobench is available online at [[http://lpd.epfl.ch/gramoli/php/synchrobench.php|synchrobench]]. Synchrobench was formerly called Microbench whose old versions can be found at [[http://lpd.epfl.ch/gramoli/php/microbench.php|microbench]]. ==== Related Publications ==== Crain T., Gramoli, V., Raynal, M. (2012) [[http://lpd.epfl.ch/gramoli/php/pub_irisa_type.php?ref=CGR12#CGR12|A Speculation-Friendly Binary Search Tree.]] //Proceedings of the 17th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP).// Dragojevic A., Felber P., Gramoli V., Guerraoui R. (2011) [[http://infoscience.epfl.ch/record/144052|Why STM can be more than a Research Toy.]] //Communications of the ACM (CACM).//