I would suggest you look into using the AF SDK for your needs.
As per Steve's suggestion you can make use of AF SDK and supply an array of values to the UpdateValues method. You'll just need to decide how many values to put in each batch depending on the system you're loading the data into, e.g. if it is a production machine you'll naturally need to be more cautious.
The other potential route is to let something like PI UFL to do the hardwork for you, it is a common way for uploading data from other systems.
As mentioned, using AF SDK and UpdateValues will probably speed it up. Also, sending values to pibufss may improve throughput. How long is it taking to update the data? How are you determining when all the data is getting updated? I ask because the bottleneck can be in many places and not in the UpdateValue call per se.