[erlang-questions] negative diference between two calls to now/0

Per Hedeland <>
Mon Feb 5 11:06:20 CET 2007


Samuel Rivas wrote:
>Rodrigo Ahumada M. wrote:
>> [...]
>> so i made a program that launches N processes that tries to conect to
>> the server, send question and receive an answer. After that the process
>> send its results to a logger process and then terminates.
>> 
>> the code for each process is like this:
>> 
>> [...]
>> 
>> time_lapse({_MgS1, S1, MuS1}, {_MgS2, S2, MuS2}) ->
>>   %% calculate the difference of msecs,
>>   %% ignore the MegaSecs because always they're zero
>>   T1 = S1*1000 + MuS1,
>>   T2 = S2*1000 + MuS2,
>>   T2 - T1.
>> [...]
>
>  MuS1 and MuS2 are microseconds, not milliseconds. Also, megaseconds
>difference is not always zero. Each about 11.5 days it changes, so if 
>you ignore then you will get negative values if, for example, you get
>
> {828, 1, 653753} - {827, 999999, 676}
>
>(example from supervisor.erl)

Good point - and of course the best answer is to use timer:now_diff/2
instead of rolling your own...

--Per Hedeland



More information about the erlang-questions mailing list