<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 22, 2016 at 8:30 AM, Joe Armstrong <span dir="ltr"><<a href="mailto:erlang@gmail.com" target="_blank">erlang@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Here's the slightly modified program.</blockquote></div><br>I *have* to nitpick this since I worry people will misuse the new 18.0 timing API. Changes to the program:<br><br></div><div class="gmail_extra">* Use erlang:monotonic_time() which gives you native resolution by default according to the precision of your systems clock (older devices will give you micro_seconds, newer systems nano_seconds). Also, by using monotonic_time we avoid time warping, which you may get with system_time.<br><br></div><div class="gmail_extra">* Request the timestamps in native format, operate on the native format and finally convert down to the desired output format. This avoids rounding errors.<br><br></div><div class="gmail_extra">I get the same bad results on OSX, but not on Linux. It would be interesting to analyze why it takes so long to wake up on OSX after having slept for 1 second. It definitely looks like a problem with being woken up and having to do work different from the scheduler loop, but I have yet to investigate why that happens.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">-module(t).<br>-compile(export_all).<br><br>test() -><br>    process_flag(priority, max),<br>    test(10, []).<br><br>test(0, L) -><br>    L;<br>test(K, L) -><br>    T1 = erlang:monotonic_time(),<br>    erlang:send_after(1000, self(), ping),<br>    receive<br>      ping -><br>        T2 = erlang:monotonic_time(),<br>        test(K-1, [erlang:convert_time_unit(T2-T1, native, micro_seconds) | L ])<br>    end.<br><br><br><br clear="all"><br>-- <br><div class="gmail_signature">J.</div>
</div></div>