Prebuild your list. Note that it is OPC Item Paths, not Ignition tag paths. Delete all the tags that subscribe to the same items for best results. (Will also speed up your other tags, as you won't be polling 20,000 items all the time.)
It will not be as fast as But it is way less work for both Ignition and for your PLC. And ensures your values aren't stale.readBlocking
for tags. (Well, unlikely to be as fast.)
20,000 tags at 4 bytes each (REAL) in a dense array will require ~ 21 round trips with 4k driver buffers. With concurrency 2, and a typical array read response time of ~5ms, you might be fastest with this method. Depends on how busy that PLC is, and how new. (L8x should be scorching fast for such array reads.)
And, with a simple dense array workload, I'll even bet IA's driver outperforms Kepware.