[erlang-questions] Dangers of generating a large erlang module

Erik Søe Sørensen <>
Sun Sep 29 19:36:02 CEST 2013


Core Erlang is an intermediate  representation in the Erlang compiler - but
also (afaik) a fairly well-defined/public one and one that is stable.
I don't think you'll find much in the vein of tutorials. Try getting erlc
to output the intermediate format, though, for a small program similar to
what you'll be using it for.
Den 29/09/2013 19.20 skrev "Ivan uemlianin" <>:

> Thanks! I think I'll try and head in that direction. I've had a few goes
> at other methods (db lookup etc) and they're much slower than this "dynamic
> hardcoding"). I'll sniff around for Core Erlang tutorials.
>
> Best wishes
>
> Ivan
>
>
> --
> festina lente
>
>
> On 29 Sep 2013, at 17:48, Erik Søe Sørensen <> wrote:
>
> A thing which I discovered recently (in connection with mochiglobal) is
> that compiling code containing large binaries, or large amounts of
> binaries,  is quite memory-intensive. As I recall it, the numbers were ~64
> bytes of RAM per byte in a binary metal; twice as much if on a 64 bit
> emulator.
> Which means that if you want to compile modules containing (in sum)
> multimegabyte binaries, doing so from Erlang source or from full Erlang AST
> is a no-go.  Iirc, it is feasible if starting from Core Erlang.
> /Erik
> Den 29/09/2013 12.50 skrev "Ivan Uemlianin" <>:
>
>> Dear Anthony
>>
>> Thanks for your comment.
>>
>> Yes, that's exactly what the generated module is doing.  The generated
>> module has a single function with many clauses like this:
>>
>>     f(<<"trigger", Rest/binary) -> ...
>>
>> This is why (as far as I can work out) the generated code has to be so
>> big.
>>
>> I prefer the idea of generating and loading code to, say, updating a
>> database table, because it seems faster and less likely to lead to
>> bottlenecks.
>>
>> Best wishes
>>
>> Ivan
>>
>>
>> On 29/09/2013 11:38, Anthony Ramine wrote:
>>
>>> Hello Ivan,
>>>
>>> Out of curiosity, what does it look like?
>>>
>>> Pattern matching on literal values in Erlang is done with a binary
>>> search over the sorted list of patterns, I am not sure this would play well
>>> with your use case even if the compilation didn't bring the VM down.
>>>
>>> Regards,
>>>
>>> Le 29 sept. 2013 à 11:29, Ivan Uemlianin a écrit :
>>>
>>>  All goes well on small test files, but the files I want to use IRL are
>>>> relatively large --- around 120,000 lines.
>>>>
>>>
>>>
>> --
>> ==============================**==============================
>> Ivan A. Uemlianin PhD
>> Llaisdy
>> Speech Technology Research and Development
>>
>>                     
>>                      www.llaisdy.com
>>                          llaisdy.wordpress.com
>>               github.com/llaisdy
>>                      www.linkedin.com/in/**ivanuemlianin<http://www.linkedin.com/in/ivanuemlianin>
>>
>>                         festina lente
>> ==============================**==============================
>> ______________________________**_________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130929/4e22c776/attachment.html>


More information about the erlang-questions mailing list