For the va-hr, seems to be about every 2 minutes. If you look at the full history for hr, it's got 148 sample at the most. And 148 happens to be the width of the screen in pixels. If you look at the graph in the native HR widget, it's for "4 hrs", and displays the 148 samples (1 pixel each). This works out to one sample every 1.6 minutes. (you can draw the same graph seen in the native widget using CIQ and the 148 samples).
I have an app that draws the HR history graph every second, and just checked in case things might have changed in the last months or something, and it changes as I indicated above. (shifts one pixel to the left to display the new reading)