[erlang-questions] What is the fastest way to check if a function is defined in a module?

Michael Truog mjtruog@REDACTED
Wed Mar 7 08:24:48 CET 2018


On 03/06/2018 10:54 PM, Metin Akat wrote:
> Thanks all. I went with the solution Richard proposed. And after testing of the full implementation, this check is certainly not the bottleneck of the system, as Jesper suggested.

The only problem with that, is that the documentation specifies that erlang:module_loaded/1 is only really meant to be used by the code server (at http://erlang.org/doc/man/erlang.html#module_loaded-1). If that bothers you, you should use the function code:is_loaded/1 instead.


>
>
>     On Tue, Mar 6, 2018, at 12:23 PM, Richard Carlsson wrote:
>>     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 <mailto:michal@REDACTED>>:
>>
>>
>>         On 6 Mar 2018, 16:36 +0100, Richard Carlsson <carlsson.richard@REDACTED <mailto: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ł.
>>
>>
>>     _________________________________________________
>>     erlang-questions mailing list
>>     erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
>>     http://erlang.org/mailman/listinfo/erlang-questions <http://erlang.org/mailman/listinfo/erlang-questions>
>
>
>     _______________________________________________
>     erlang-questions mailing list
>     erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
>     http://erlang.org/mailman/listinfo/erlang-questions <http://erlang.org/mailman/listinfo/erlang-questions>
>
>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20180306/bcb7fde8/attachment.htm>


More information about the erlang-questions mailing list