That code makes me wonder if it could be rewritten using gen_fsm. Never used gen_fsm myself, so I'm not really sure.<br><br>Robby<br><br><div class="gmail_quote">On Thu, Apr 14, 2011 at 11:48 AM, Dave Challis <span dir="ltr"><<a href="mailto:dsc@ecs.soton.ac.uk">dsc@ecs.soton.ac.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hi Robby,<br>
Yup, I agree completely :)<br>
<br>
My question was mostly prompted by a blog post (<a href="http://ppolv.wordpress.com/2008/02/25/parsing-csv-in-erlang/" target="_blank">http://ppolv.wordpress.com/2008/02/25/parsing-csv-in-erlang/</a>) on parsing CSV in erlang.<br>

<br>
The do_parse function there has a dozen items which search binaries and check state, which made me wonder whether swapping the argument order round would make any difference at all.<br>
<br>
Cheers,<br><font color="#888888">
Dave</font><div><div></div><div class="h5"><br>
<br>
On 13/04/11 19:44, Robert Raschke wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Dave,<br>
<br>
probably not quite the answer you were looking for, but aim for<br>
readability first (that's usually already hard enough :-). Only<br>
compromise that if something is measurably too slow.<br>
<br>
In the example you give, it doesn't appear to make any big difference<br>
for readability, but I assume your real code is a bit more<br>
"interesting"?<br>
<br>
Robby<br>
<br>
<br>
On 4/13/11, Dave Challis<<a href="mailto:dsc@ecs.soton.ac.uk" target="_blank">dsc@ecs.soton.ac.uk</a>>  wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
On 13/04/11 13:46, Antoine Koener wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
On Apr 13, 2011, at 13:44 , Dave Challis wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Does the order of patterns in a function call matter? Are they all<br>
tested, or will erlang stop trying to match them once a mismatch has<br>
been found?<br>
<br>
As an example, if I've got:<br>
<br>
foo(<<SomeLargeBinary>>, a) ->  a;<br>
foo(<<SomeLargeBinary>>, b) ->  b.<br>
<br>
will the above be any slower than defining:<br>
<br>
foo(a,<<SomeLargeBinary>>) ->  a;<br>
foo(b,<<SomeLargeBinary>>) ->  b.<br>
<br>
Will the<<SomeLargeBinary>>  attempt to be matched in every case? Is<br>
it something worth thinking about, or will the compiler optimise this?<br>
</blockquote>
<br>
If the content of<<SomeLargeBinary>>  is irrelevant, you can use the '_'<br>
notation:<br>
<br>
foo(a, _Bin) ->  a;<br>
foo(b, _Bin) ->  b;<br>
<br>
Then this is explicit for the reader that you don't want to check _Bin.<br>
</blockquote>
<br>
Sorry, my example wasn't great, I was more wondering about the cases<br>
when the binary data is relevant.<br>
<br>
So a better example might be:<br>
<br>
foo(<<$x,_Rest/binary>>, a) ->  a1;<br>
foo(<<$y,_Rest/binary>>, a) ->  a2;<br>
foo(<<$z,_Rest/binary>>, a) ->  a3;<br>
foo(<<$x,_Rest/binary>>, b) ->  b.<br>
<br>
If I then called:<br>
foo(<<"x">>, b).<br>
<br>
Would erlang perform 4 binary pattern matches until it got to the last<br>
clause?<br>
<br>
Or would it optimise things and only perform a single binary match by<br>
matching on the atoms first?<br>
<br>
Or will it always test all arguments in all cases?<br>
<br>
<br>
--<br>
Dave Challis<br>
<a href="mailto:dsc@ecs.soton.ac.uk" target="_blank">dsc@ecs.soton.ac.uk</a><br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">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></blockquote>
<br>
<br></div></div>
-- <br><div><div></div><div class="h5">
Dave Challis<br>
<a href="mailto:dsc@ecs.soton.ac.uk" target="_blank">dsc@ecs.soton.ac.uk</a><br>
</div></div></blockquote></div><br>