I'm surprise that you're seeing this performance hit - can you attach an example?
Implementation methods will greatly impact the performance of VISA read - for example, do you read 1 byte at a time? I know from apps I've written with VISA that I can sustain data rates much higher than what you're seeing. An option is to use queuing - you may wish to have two processes - one reads via visa (over and over in rather large chunks) and stores it in a queue, and the other actually performs the data processing.
