[erlang-questions] Why is erlc so quick to start?

Loïc Hoguin essen@REDACTED
Mon Jan 5 11:33:21 CET 2015


On 01/05/2015 11:05 AM, Roger Lipscombe wrote:
> On 5 January 2015 at 09:14, Vlad Dumitrescu <vladdu55@REDACTED> wrote:
>> Hi!
>>
>> Maybe you can compare "erlc myfile" with "erl -s compile file myfile"? Or
>> start some other code that does something relevant, with and without the
>> magic arguments.
>
> Given foo.erl:
>
>      -module(foo).
>      -export([compile/0]).
>
>      compile() ->
>         compile:file("foo.erl"),
>         erlang:halt().
>
> "erlc foo.erl" takes 0.18 secs.
> "erl -noinput -s foo compile" takes 0.23 secs.
> "erl +sbtu +A0 -noinput -mode minimal -boot start_clean -s foo
> compile" takes 0.17 secs.
>
> "+sbtu" doesn't seem to make any difference; "+A0" seems to
> responsible for ~0.04 secs; "-mode minimal" for ~0.03 secs; "-boot
> start_clean", again, seems to make no difference.

We discussed it a bit on IRC after my post here and came to the same 
conclusions. The biggest gain from "erl" to "erlc" comes from -noinput. 
After that, the small gains you mention are what do the rest.

We then went on to guess that what makes some escripts slow would be 
either what "escript" is doing (the compile/interpreting/dealing with 
packaged escripts; this won't show up in a 2 lines escript :-) or what 
the escript itself is doing. None of us being really interested in 
escripts the discussion ended there.

"erlc" could most likely be much faster because it currently uses the 
start_clean boot file. It would be interesting to experiment with a 
minimal boot file.

I like the current findings though, I can use them in other areas (edoc, 
triq, erlydtl, ...).

-- 
Loïc Hoguin
http://ninenines.eu



More information about the erlang-questions mailing list