public
Created

  • Download Gist
timestamp_vs_now.erl
Erlang
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#!/usr/bin/env escript
 
epoch() ->
{Mega,Sec,Mili} = now(),
(Mega * 1000000) + Sec + (Mili / 1000000).
 
measure(F) ->
Ini = epoch(),
F(),
epoch() - Ini.
 
main(_Args) ->
Times = lists:seq(1,1000000),
Test1 = fun() -> [ os:timestamp() || _ <- Times ] end,
Test2 = fun() -> [ now() || _ <- Times ] end,
io:format("os:timestamp = ~5.2f ~5.2f ~5.2f~n", [
measure(Test1), measure(Test1), measure(Test1)
]),
io:format("erlang:now = ~5.2f ~5.2f ~5.2f~n", [
measure(Test2), measure(Test2), measure(Test2)
]),
0.

In this case erlang:now() is fater than os:timestamp(), but if we try in a concurrent fashion:

https://gist.github.com/manuel-rubio/5303075

The results are the opposite.

Adding the:

-mode(compile).

As in this fork: https://gist.github.com/legoscia/5303050

The results are very different. The better results are os:timestamp().

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.