Take a look at <a href="http://www.erlang.org/doc/efficiency_guide/functions.html">http://www.erlang.org/doc/efficiency_guide/functions.html</a> for the cost of various calls.<div><br></div><div>Now the document only talks about the relative cost of various calls.  Perhaps call cost pales in comparison to the cost of executing your functions.  Benchmarking is the only way to find out for sure if call cost is relevant for you.</div>
<div><br></div><div><br></div><div>This code...<br><br><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:16px;background-color:rgb(255,255,255)">FList = [F1 = fun callback_module:fun_1/1 end... F1 = fun callback_module:fun_3/1].</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:16px;background-color:rgb(255,255,255)">
<br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:16px;background-color:rgb(255,255,255)"><div class="gmail_quote">... has led me to another question for the mailing list:  Will these funs automatically use a new version of loaded module or are they permanently fixed to the old version?</div>
<div class="gmail_quote"><br></div><div class="gmail_quote">Dan.</div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote">On Wed, Nov 28, 2012 at 10:29 AM, Álvaro <span dir="ltr"><<a href="mailto:avalormaquedano@gmail.com" target="_blank">avalormaquedano@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Erlangers,<br><br>I have a question regarding the pros and cons of using anonymous functions instead of functions stored in a callback module.<br>
<br>Let me introduce my program:<br><br>I need to handle lists of functions e.g.: FList = [F1,F2,F3] where I must then use them in the following way ( given some term X):<br>
<br>Result1 = F1(X),<br>[... some other computations]<br>Result2 = F2(Result1),<br>[... some other computations]<br>Result3 = F3(Result2),<br><br>Now, I am defining FList = F1...F3 as <br>FList = [F1 = fun callback_module:fun_1/1 end... F1 = fun callback_module:fun_3/1].<br>

<br>The problem is the following:<br><br>If I recompile and load the code for the callback module (hot code swapping) the output of some functions (e.g. Result2 from F2) may not be suitable for consequent ones (e.g. F3), as these latter ones are using the updated version of the code.<br>

<br>A possible solution can be defining the list of functions as:<br>FList = [F1 = fun (X) -> X+1 end, ..., F3 = fun(X) -> X *2 end] <br>(of course these functions do not invoke any code that could be hot swapped)<br>

<br><br>My question is:<br><br>Shall I expect a big decrease of the performance if I use the second alternative? The list of functions can be quite big (maybe few hundreds of functions).<br><br>I must say that the callback module is always the same for the functions appearing in the same list of functions (so all these would be loaded if the module is loaded, right?).<br>

<br><br><br>I hope I have made my problem clear.<br>Any help will be much appreciated.<br>Cheers,<br>Álvaro<br><br>
<br>_______________________________________________<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></blockquote></div><br></div>