2012-05-16 58 views
0

会是怎样匹配等之间的区别:二郎二进制匹配效率

fun(Binary) -> 
    [Value, Rest] = binary:split(Binary, <<101>>) 
end 

fun(Binary) -> 
    [Value, <<Rest/binary>>] = binary:split(Binary, <<101>>) 
end 

我想到一个可以简单地增加一个计数器,因为它穿越二进制,保持子二进制指针,另一个会复制一个新的二进制文件。有任何想法吗?

回答

1

我可以用两种方式来思考模式匹配。

方法1:

[A,B] = [<<"abcd">>,<<"fghi">>] 

方法2:

[A, <<B/binary>>] = [<<"abcd">>,<<"fghi">>] 

除非你需要使它肯定B是二进制的,方法2将它更长的时间,几微秒,因为它不只是给B分配< <“fghi”>>,但是也要确保它是bianary。

但是,如果您需要比方法2更多的解析,则可以继续进行,而方法1无法执行。

[A, <<B:8, Rest/binary>>] = [<<"abcd">>,<<"fghi">>]. 
1

我想你可以通过timer模块的tc/N函数来测试它。