Home

Awesome

signal-slot-benchmarks

Comprehensive benchmarks for a majority of GitHub c++ signal slot implementations and others. <br/> Boost, as well as C++17 support, is required to build this project.

Foreword

These benchmarks do not accurately depict real world usage patterns seen in the wild. <br/> However, these benchmarks were designed to provide impartial results regardless of implementation. <br/>

Tested Environments

<div style="text-align:center; margin-bottom:1em;">click to view results</div> <div style="text-align:center; display:flex;"> <div style="flex:1;"> <a href="/results/benchmarks_msvc/README.md"> <button type="button" style="padding:2em; cursor:pointer; font-size:2em; width:90%;"> MSVC (Windows) [RECENTLY UPDATED] </button> </a> </div> <div style="flex:1;"> <a href="/results/benchmarks_gcc/README.md"> <button type="button" style="padding:2em; cursor:pointer; font-size:2em; width:90%;"> GCC (Linux) [HELP WANTED] </button> </a> </div> </div>

Maintainers

Generally, implementations that get added to this benchmark project aren't regularly updated by me unless asked to do so. If you are a maintainer of a referenced library, I encourage you to fork this project and create pull requests to expedite updates.

Benchmark Algorithms

The individual benchmark algorithms are completely generic through the use of templates.

AlgorithmDescription
validation_assertMake sure each signal implementation is functioning correctly.
constructionSample the default construction of N * N number of Signal instances.
destructionSample the destruction of N * N number of Signal instances.
connectionSample Signal connections to N number of Foo instances.
disconnectSample disconnecting N number of Foo instances from a single Signal.
reconnectSample reconnecting N number of Foo instances to a global Signal.
emitSample the duration of an N slot emission.
allSample all previous benchmarks together in one combined benchmark.
threadedSame as the previous benchmark but is now threaded.
<br/>