<div dir="ltr">  Heh, I see I forgot to change the title when replying. Whoops.<br><br><br>  Sort of. I'd flow it like this - <div><br>  if</div><div>    fixed interval -> apply_interval();<br>    varied interval andalso not multiple timers firing nearly at the same time -> timer:sleep(), spawn(fun() -> process() end), timer:sleep(); %One timer at a time</div><div>    _Otherwise -> send_after() %Scales better when multiple timers are in use, may still drift<br>  end<br><br>Basically, assume that one timer is extremely exact, but that two timers set to wake up at the same time will cause them to drift. Assume also that the amount of drift tapers off with the amount of distance in between the two timers' wake time (interrupts and lock contention? I don't know the reason). Optimize and architect accordingly; in testing with a few thousand send_after calls, set to go off in 100 group batches, the drift I saw was still < 40ms (probably far less, but it was related to video, so my tolerance was 'frame accurate'). Again, this is based on my own experiences, my hardware, YMMV, etc. </div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 13, 2015 at 3:01 PM, Imants Cekusins <span dir="ltr"><<a href="mailto:imantc@gmail.com" target="_blank">imantc@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">.."trying to create many processes, with timers all having very close together stop times leads to very noticeable drift. The closer they are together, the worse it is."</p>
<p dir="ltr">Would this be a fair summary:</p>
<p dir="ltr">- timer works for pausing for at least a while;</p>
<p dir="ltr">- when exact interval is critical, another solution may be necessary;</p>
<p dir="ltr">- there are technical limits to timer, much like to the vm. </p>
<p dir="ltr">The fact that both timer and vm can take a lot of wear does not mean that things should be piled up until vm breaks. Spreading the load may help.</p>
<p dir="ltr">?<br>
</p>
</blockquote></div><br></div>