FastSignals is a C++17 signals/slots implementation which API is compatible with Boost.Signals2.
FastSignals pros:
- Faster than Boost.Signals2
- Has more compact binary code
- Has the same API as Boost.Signals2
FastSignals cons:
- Supports only C++17 compatible compilers: Visual Studio 2017, modern Clang, modern GCC
- Lacks a few rarely used features presented in Boost.Signals2
- No access to connection from slot with
signal::connect_extended
method - No connected object tracking with
slot::track
method- Use bind_weak instead
- No temporary signal blocking with
shared_connection_block
class - Cannot disconnect equivalent slots since no
disconnect(slot)
function overload - Any other API difference is a bug - please report it!
- No access to connection from slot with
See also Migration from Boost.Signals2.
Directory tests/libfastsignals_bench
contains simple benchmark with compares two signal/slot implementations:
- Boost.Signals2
- libfastsignals
Benchmark compairs performance when signal emitted frequently with 0, 1 and 8 active connections. In these cases libfastsignals is 3-6 times faster.
*** Results:
measure emit_boost emit_fastsignals
emit_boost/0 1.00 3.00
emit_boost/1 1.00 5.76
emit_boost/8 1.00 3.70
***