Thank you all for your time in answering. It seems my memory entered holiday already. :)<div><br></div><div>Regards,</div><div>CGS</div><div><br><div><br></div><div><br></div><div><br><br><div class="gmail_quote">On Fri, Jul 6, 2012 at 2:38 PM, Magnus Henoch <span dir="ltr"><<a href="mailto:magnus.henoch@erlang-solutions.com" target="_blank">magnus.henoch@erlang-solutions.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hm, ignore my previous answer, then; I was under the impression that<br>
small enough integers would be stored as immediates in the<br>
list cell...<br>
<div class="HOEnZb"><div class="h5"><br>
----- Original Message -----<br>
><br>
> <a href="http://www.erlang.org/doc/efficiency_guide/advanced.html" target="_blank">http://www.erlang.org/doc/efficiency_guide/advanced.html</a><br>
><br>
><br>
> The data structure you want for space efficiency is binary.<br>
><br>
> On Friday, July 6, 2012, CGS wrote:<br>
><br>
><br>
> Hi everyone,<br>
><br>
><br>
> I am puzzled by a behavior I didn't expect, so, if anyone can help to<br>
> understand it, I would appreciate.<br>
><br>
><br>
> Let's consider a string of latin1 characters. When dumped to a file<br>
> on a harddisk it occupies, as expected, 1 B per character. When<br>
> loaded in a variable in Erlang shell, I get about 21 B per character<br>
> (at least free is reporting that). Of course, it is hard to test on<br>
> one character due to changing RAM consumption of other processes.<br>
> So, my test case consisted in (I voided writing down and reading<br>
> from a file in the test case):<br>
> 1. stabilizing the environment (no other processes were started, but<br>
> the OS ones and watching for the RAM consumption stabilization at<br>
> the level of MB - give or take 1MB);<br>
> 2. opening an Erlang shell (few MB consumption - stable);<br>
> 3. executing:<br>
><br>
><br>
> L = lists:map(fun(_) -> 107 end,lists:seq(1,10000000)), ok.<br>
><br>
><br>
> where (I know it's obvious, but just for completeness):<br>
> - 107 is representing "k" character;<br>
> - the 'ok' atom at the end is for not writing the content of L in the<br>
> shell;<br>
> - the list [107,107,...] is equivalent to "kk..." string (which<br>
> written in a plain text file it gives 1 B per character as it is<br>
> expected).<br>
><br>
><br>
> The occupied RAM jumped by 214-217 MB for 10^7 characters (at 10^6<br>
> characters, I got 21 MB, so, it is related to the string length<br>
> only), which gives about 21 B per character (one can compute within<br>
> the errors the exact the size, but I took that value as the minimum<br>
> possible).<br>
><br>
><br>
> Erlang shell reports "Erlang R15B01 (erts-5.9.1) [source] [smp:4:4]<br>
> [async-threads:0] [hipe] [kernel-poll:false] [dtrace]".<br>
><br>
><br>
> I know that this isn't a big problem, but I am missing something here<br>
> for sure. Can anyone point what I am missing? Thank you in advance.<br>
><br>
><br>
> Regards,<br>
> CGS<br>
><br>
><br>
</div></div><div class="HOEnZb"><div class="h5">> _______________________________________________<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" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
><br>
<br>
--<br>
Magnus Henoch<br>
Erlang Solutions Ltd<br>
<a href="http://www.erlang-solutions.com/" target="_blank">http://www.erlang-solutions.com/</a><br>
<br>
</div></div></blockquote></div><br></div></div>