[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