[erlang-questions] The is_record() guard

Steve Davis <>
Sat Jul 25 22:39:24 CEST 2009


Hi Bjorn,

Definitely the approach suggested by Oscar shows much better numbers in 
fprof...

I also see other cases where functions that filter arguments using 
guards appear to be (quite a bit) less efficient than direct matches on 
the arguments.

Would it be fair to say that, where possible. pattern matching function 
arguments is in general more efficient than using guards?

Regards,
Steve

Bjorn Gustavsson wrote:
> 2009/7/23 Oscar Hellström <>:
>> Hi Steve,
>>
>> You could also do it this way:
>>
>> transform(#rec_a{} = R) -> ... ;
>> transform(#rec_b{} = R) -> ... ;
>> ...
> 
> Yes, that is the recommended way to do it.
> 
> Not only will the matching in the function head be more efficient, but
> the compiler
> may also generate better code for further record operations in the
> body of the function.
> 
> /Bjorn
> 



More information about the erlang-questions mailing list