Erlang二进制匹配效率

时间:2012-05-16 03:37:08

标签: performance binary erlang matching

匹配之间有什么区别:

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

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

我在想,人们可以简单地递增一个计数器,因为它遍历二进制文件并保留子二进制指针而另一个将复制一个新的二进制文件。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为您可以通过timer模块的tc/N功能对其进行测试。

答案 1 :(得分:1)

我可以通过两种方式考虑模式匹配。

方法1:

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

方法2:

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

除非你需要确保B是二进制的,否则方法2将花费更长的时间,几微秒,因为它不只是分配&lt;&lt;“fghi”&gt;&gt;到B,但也确保它是bianary。

但是如果你需要比方法2更多的解析,你可以更进一步,方法1不能做。

[A, <<B:8, Rest/binary>>] = [<<"abcd">>,<<"fghi">>].
相关问题