<div dir="ltr">See <a href="http://erlang.org/doc/man/assert.hrl.html">http://erlang.org/doc/man/assert.hrl.html</a> (requires Erlang/OTP 18 or later, otherwise the same macros can only be accessed by including eunit.hrl).<br><br></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><br>        /Richard</div></div>
<br><div class="gmail_quote">2016-01-28 12:01 GMT+01:00 Roger Lipscombe <span dir="ltr"><<a href="mailto:roger@differentpla.net" target="_blank">roger@differentpla.net</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'm considering adding more-expressive guard clauses to some of my<br>
functions, in order to prevent garbage data getting past certain<br>
points in my application.<br>
<br>
If I have a macro like something the following...<br>
<br>
    -define(is_valid_id(Id),<br>
        (is_binary(Id) andalso byte_size(Id) =:= 16 andalso Id =/=<br>
<<"0000000000000000">>)).<br>
<br>
...and I use it in the following way...<br>
<br>
    frobnicate(StudentId, CourseId) when ?is_valid_id(StudentId),<br>
?is_valid_id(CourseId) -><br>
        ...<br>
<br>
...just how expensive, in terms of timing, is that? Is it something I<br>
need to worry about? Can I scatter these guards everywhere? Should I<br>
restrict them to a few places? Should I make it so that they can be<br>
turned off in production (through a compiler define)?<br>
<br>
Obviously, I'll be looking to actually measure it, but I'm wondering<br>
if anyone's tried this and got anything to suggest.<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" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div>