[erlang-questions] What is the fastest way to check if a function is defined in a module?
Richard Carlsson
carlsson.richard@REDACTED
Tue Mar 6 21:23:30 CET 2018
I was actually considering submitting such a patch a while back, but one
argument against making that short-cut could be that operations against the
code server should be serialized. On the other hand I haven't yet come up
with an example where the short-cut would make a difference that couldn't
already happen due to processor scheduling.
/Richard
2018-03-06 16:40 GMT+01:00 Michał Muskała <michal@REDACTED>:
> On 6 Mar 2018, 16:36 +0100, Richard Carlsson <carlsson.richard@REDACTED>,
> wrote:
>
>
> is_exported(M, F, A) ->
> case erlang:module_loaded(M) of
> false -> code:ensure_loaded(M);
> true -> ok
> end,
> erlang:function_exported(M, F, A).
>
> (code:ensure_loaded() is slow compared to the fast call to
> erlang:module_loaded(), even if the module is already in memory).
>
>
>
> I was recently wondering about this. Is there a reason
> code:ensure_loaded() does not short circuit using erlang:module_loaded()?
> It could probably even skip the request to the code server entirely in case
> the module is already loaded.
>
> Michał.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20180306/b4191463/attachment.htm>
More information about the erlang-questions
mailing list