Skip to content

Latest commit

 

History

History
40 lines (29 loc) · 1.46 KB

why-fastsignals.md

File metadata and controls

40 lines (29 loc) · 1.46 KB

Why FastSignals?

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
    • 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!

See also Migration from Boost.Signals2.

Benchmark results

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
***