File size: 1,492 Bytes
985c397
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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
        * Use [bind_weak](bind_weak.md) 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!

See also [Migration from Boost.Signals2](migration-from-boost-signals2.md).

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

***

```