As you pointed out this is the remarks under GetPISnapshotData:
"This method is equivalent to GetPIArchiveData with a PIArcMannerRetrivalType of Compressed and PIArcMannerBoundaries of Outside for the TimeRange that denotes current time; These queries must specify StartTime=* and EndTime=*, since the snapshot is usually before or at current time."
You can think of GetPIArchiveData as a general method capable of fetching archive and/or snapshot data in different modes and shapes with possibly a time range included. Since the snapshot value of a PI tag is of specific importance you can use GetPISnapshotData method as a shortcut to retrieve the snapshot value.
If I have same use case, which is the right operation to use?
If archive operation (with comp, outside, *, *) is same as snapshot than which is best in performance?
For your purpose there is no real difference in performance. The code would be the same either way. As I said before, the main reason is that you wouldn't need to populate all the arguments of GetPIArchiveData and use GetPISnapshotData as a shortcut in writing.
Thank you for your reply.
Here is the use case.
Retrieve latest meter read from PI system. So if I pass today's date I should receive current meter read of that tag. Otherwise I should get most recent one (probably yesterdays, or the day before yesterday...( for dalily reads).
1. PI systems containes daily meter reads. New value at 11:59:59 per day...
2. I want the retreieve latest one using archieve operation..
3. I pass start date and end date (can be last two months, one month, 10 days, a week, etc...from current date)
4. I pass numvalue=1, compress, + outside.
If this is my case than I'll get the most recent value in the specified time range? But, here I'm passing long interval(last 3 months, for instance)...will service "scan" all values and pass the latest one? If this is the case, how performance of snapshot and archive are same?
If you are looking for values a specific time interval as you describe, then GetPISnapshotData is not the method to consider. GetPISnapshotData is only used as a shortcut when you are only interested in the snapshot value (as opposed to any archived value) of a tag. If you are interested in anything other than that, including a specific time interval as you described, GetPIArchiveData would be the way to go.
The two methods are equivalent in performance only when retrieving the snapshot value of a tag.