See
this post for information on how the SyncClock module works.
On native hardware the CMOS clock is more accurate than the interrupt soft clock, but can still drift by several seconds a day depending on the state of the rechargeable battery, which is likely to be very poor given the age of Risc PC's now. Accuracy can be enhanced by regularly running a ntp time utility which updates the hard and soft clocks from the internet.
When running under the emulator, SyncClock will cause the host OS's clock to be read, and this will rely on it's accuracy and resolution. I don't know if Windows VRPC uses the standard 18Hz DOS clock, which is lower resolution than RISC OS's 100Hz tick, or if it uses one of the many other APIs which can provide microsecond resolutions. How accurate these are depends on the particular PC, Windows doesn't even put seconds on its taskbar clock, so its not as obvious! XP and later also have the ability to update the time from the internet, but it needs to be set up, and by default it seems to only want to check once per fortnight, which is far too long.
But whatever you are doing, you will have to expect time to be quite lumpy on the emulator. If SyncClock isn't run, it will lose time as the Host OS fails to deliver timer events under load, and time will freeze while RISC OS is suspended. If SyncClock is running, regular adjustments will be made, which will result in the clock jumping anything from a few centiseconds to hours. RISC OS 5's RTCAdjust module does a better job smoothing out the small changes, but still has to jump for large adjustments.