<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">See <a href="http://erlang.org/doc/man/compile.html#noenv_forms-2">http://erlang.org/doc/man/compile.html#noenv_forms-2</a> about forms.<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">My module is quite  large. The compressed beam-file is about 45MB. But that is besides the point. It does not explain why the atoms are generated.<br></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div>/Håkan</div></div></div></div>
<br><div class="gmail_quote">On Fri, Jul 28, 2017 at 9:33 AM, Albin Stigö <span dir="ltr"><<a href="mailto:albin.stigo@gmail.com" target="_blank">albin.stigo@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Håkan,<br>
<br>
Interesting problem... not completely sure I understand it 100% then.<br>
What do you mean by "list of forms". How large is your module?<br>
<br>
I'm not sure why the compiler registers so many atoms but I guess it<br>
has to do with the compiler's internal representation of your module.<br>
<br>
I find "The BEAM book" to be a great resource when I run in to these<br>
kinds of problems:<br>
<a href="https://github.com/happi/theBeamBook" rel="noreferrer" target="_blank">https://github.com/happi/<wbr>theBeamBook</a><br>
<span class="gmail-HOEnZb"><font color="#888888"><br>
<br>
--Albin<br>
</font></span><div class="gmail-HOEnZb"><div class="gmail-h5"><br>
On Fri, Jul 28, 2017 at 9:22 AM, Håkan Mattsson <<a href="mailto:hawk.mattsson@gmail.com">hawk.mattsson@gmail.com</a>> wrote:<br>
> You must have mis-understood what I wrote.<br>
><br>
> It is not my program that generates all those atoms. They are generated<br>
> internally by the compiler while it is compiling my program from forms. The<br>
> atoms my program are using do already exist in the forms data structure.<br>
><br>
> I am very well aware of the +t flag. But it is quite boring to set it to<br>
> 100M just to be able to compile. As I do not understand why the compiler<br>
> dynamically generates all these internal atoms I cannot predict how big the<br>
> atom table needs to be. In my latest run the compiler actually generated 25M<br>
> atoms (which is 25 times the default size of the atom table). It surprised<br>
> me.<br>
><br>
> Please, do not come up with further suggestions about avoiding explicit<br>
> creation of atoms in general. My question was much more specific.<br>
><br>
> /Håkan<br>
><br>
> On Jul 28, 2017 08:43, "Albin Stigö" <<a href="mailto:albin.stigo@gmail.com">albin.stigo@gmail.com</a>> wrote:<br>
><br>
> 1. Try to avoid dynamically creating new atoms.<br>
><br>
> 2. But I need to! Goto rule 1.<br>
><br>
> 3. Dynamic atoms are not safe for long running code. You will<br>
> eventually exhaust the atom table and this will lead to subtle bugs.<br>
><br>
> 4. If you really DO need to create dynamic atoms for a quick and dirty<br>
> hack, keep in mind that atoms with a common prefix ie. foo_1, foo_2,<br>
> foo_3 etc will lead worse performance because of how erlang compares<br>
> atoms (some Erlang guru correct me if I'm wrong but this used to be<br>
> the case).<br>
><br>
><br>
> --Albin<br>
><br>
><br>
> On Fri, Jul 28, 2017 at 8:23 AM, Valentin Micic <<a href="mailto:v@pharos-avantgard.com">v@pharos-avantgard.com</a>><br>
> wrote:<br>
>><br>
>> Is this anything that can be disabled?<br>
>><br>
>> Say that there is, very soon you would be asking: why is there a limit on<br>
>> a<br>
>> number of atoms?<br>
>> Instead, you should write a code that does not generate 700k atoms.<br>
>><br>
>> V/<br>
>><br>
>><br>
>> ______________________________<wbr>_________________<br>
>> erlang-questions mailing list<br>
>> <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
>> <a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br>
>><br>
><br>
><br>
</div></div></blockquote></div><br></div></div>