我很好奇为什么逗号<,>是一个快捷方式and而不是andalso保护测试.
and
andalso
由于我称自己为"C native",我没有看到短路布尔评估的任何缺点.
我使用to_core标志编译了一些测试代码,以查看实际生成的代码.使用逗号,我看到左手值,右边和值得到评估,并且两者都是和.随着andalso你的情况下块内的情况下块,并没有呼叫erlang:and/2.
to_core
erlang:and/2
我没有进行基准测试,但我敢说andalso变体是更快的.
erlang boolean-expression short-circuiting
boolean-expression ×1
erlang ×1
short-circuiting ×1