
Timmo Stange wrote:
Peter Dimov wrote:
Such an approach may turn out to not be acceptable, though, given that the majority of signal benchmarks place heavy emphasis on operator() calls.
I sense some bitterness there ;).
No, not really. I have no horse in this race. I take the benchmarks at face value; they indicate that there is obviously interest in an implementation with a fast operator(). I was never particularly fond of providing dual components with thread-safe and "thread-unsafe" interfaces (for the various definitions of that.) The ideal scenario, in my mind, is to provide a single component that is still as overhead-free as possible in the single-threaded scenario. Unfortunately, the straightforward approach of copying a vector<shared_ptr> doesn't achieve that goal, but I _think_ that it's possible to implement the same interface in a more efficient way, using copy on write and versioning tricks. Maybe Frank's implementation already does this.