epics-base / pvAccessCPP

pvAccessCPP is an EPICS V4 C++ module
https://epics-base.github.io/pvAccessCPP/
Other
10 stars 22 forks source link

CA Provider speed-up when connecting tens of thousands of CA channels #176

Closed anjohnson closed 2 years ago

anjohnson commented 3 years ago

This uses Jeff Hill's tsDLList implementation in the CA Provider to keep track of all the currently active CA Channel objects. I couldn't find a C++ standard container which didn't slow down the creation or deletion of channels or have unbounded memory issues (or require a garbage collection background thread). Maybe a std::map might have worked and been acceptable, but it would still have been slower than this.

Our user's application went from over 70 seconds to connect 60,000 PVs with EPICS 7.0.6 to under 3 with this version.