[erlang-questions] Optimization for the ++ operator

Björn-Egil Dahlberg <>
Fri Jun 1 15:22:16 CEST 2012


On 2012-06-01 15:09, Gustav Simonsson wrote:
> On 2012-06-01 12:07, Björn-Egil Dahlberg wrote:
>>
>> 1 jun 2012 kl. 10:46 skrev "José Valim" < 
>> <mailto:>>:
>>
>>>     The '++' operator does not verify that the second argument is a
>>>     list.
>>>     Therefore, the compiler will rewrite the first expression to simply:
>>>
>>>     [$F,$o,$o|Bar]
>>>
>>>
>>> Yes, thanks. For some weird reason I thought Erlang restricted the 
>>> right side to be a list in such cases.
>>>
>>>     Have you made sure that you run each test in a newly spawned
>>>     process? 
>>>
>>>     Do you run the test for long enough time?
>>>
>>>
>>> Running in a newly spawned process did the trick, the results are 
>>> now consistent.
>>> I was already running it 1000 times, here is the code (without using 
>>> spawn):
>>>
>>> https://www.refheap.com/paste/2954
>>>
>>> I assume having a "clean" heap (reducing the chance of garbage 
>>> collection) is the reason why it is a good idea to run benchmarks in 
>>> a newly spawned process?
>>
>> If you want to vary one parameter in a test, make sure all other 
>> parameters stays the same otherwise you have no idea what you are 
>> measuring!
>>
>> Code loading, heaps, position of mars .. Everything has to be taken 
>> into account.
>
> The effect of Mars magnetic field on that of Earth, even if Earth's 
> aphelion and the perihelion of Mars were to coincide and the 
> interplanetary distance were to be at its theoretical minimum, is 
> negligible compared to the normal variations in Earth's magnetic field.
>
> Therefore it's very unlikely that the relative position of Mars would 
> affect the probability of a memory bitflip occurring due to cosmic 
> radiation and thus affecting the benchmark.

My point, in case you missed it, is that you can't disregard something 
out of hand. You have to be sure. In physics you might be familiar to 
similar topics from dimensional analysis, i.e. how to come up with a 
model and how to disregard useless parameters.

All I'm saying is that you should be sure of what you are measuring. =)

>
> Regards,
> Gustav Simonsson
> Erlang/OTP team
>
>>
>>
>>>
>>> Thanks Björn!
>>> _______________________________________________
>>> erlang-questions mailing list
>>>  <mailto:>
>>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>>
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/listinfo/erlang-questions
>
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120601/eb3d2b5d/attachment.html>


More information about the erlang-questions mailing list