defmodule Untangle.Time do use Decorator.Define, time: 0 require Logger # skip the measuring depending on env def time(fn_body, context) do quote do if Untangle.log_level?(:debug) do start = :erlang.monotonic_time() result = unquote(fn_body) finish = :erlang.monotonic_time() time = :erlang.convert_time_unit(finish - start, :native, :microsecond) Logger.debug( "Time to run #{unquote(context.module)}.#{unquote(context.name)}/#{unquote(context.arity)}: #{time / 1_000} ms" ) result else unquote(fn_body) end end end end