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