Since you are looking at the option to get the archived data for the 2 tags and re-using the data for the different formulas, I don't think there is any existing methods in the PI SDK that supports taking in PIValues objects and running calculation with it.
There are over 500 control loops for which this data needs to be calculated for - Hence the huge load on the archive subsystem.
I guess what you mean here is that the result of the 10 formulas are re-used in 500 loops here, perhaps you can use PI SDK to run the 10 formula once and store them for re-use in the 500 control loops, instead of getting the archived values of the 2 tags as PIValues objects?
There is a method in PI SDK for calculating the percentage that a given expression is true over a period of time, you can refer to the PI SDK Programming Reference for IPICalculation.PercentTrue method.
Hope this helps.
Unfortunately for each of the 500 loops, the two tags differ, so the values will also.
I am aware of the IPICalculation.PercentTrue method, but I fear I will just run into the same performance issue.
Thanks for your help