I'm calling an update function to draw a real time simulation and was wondering if there was an effective way to get the number of milliseconds passed since the last update? At the moment I have a DispatchTimer calling at regular intervals to update the simulation but the timing isn't accurate enough and ends up being about 60% slower than it should be (it varies).
I would use
Stopwatch.GetTimestamp() to get a tick count, then compare the value before and after. You can convert this to timings by:
var startTicks = Stopwatch.GetTimestamp(); // Do stuff var ticks = Stopwatch.GetTimestamp() - startTicks; double seconds = ticks / Stopwatch.Frequency; double milliseconds = (ticks / Stopwatch.Frequency) * 1000; double nanoseconds = (ticks / Stopwatch.Frequency) * 1000000000;
You could also use
var sw = Stopwatch.StartNew(); and
sw.Elapsed.TotalMilliseconds afterwards if you just want to time different chunks of code.