【问题标题】:Erlang binary matching efficiencyErlang二进制匹配效率
【发布时间】:2012-05-23 14:38:50
【问题描述】:

匹配之间有什么区别:

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

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

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

【问题讨论】:

    标签: performance binary erlang matching


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我认为模式匹配有两种方式。

      方法一:

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

      方法二:

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

      除非您需要确保 B 是二进制的,否则方法 2 会花费更长的时间,几微秒,因为它不仅将 > 分配给 B,而且还要确保它是二进制的。

      但是如果你需要比方法2更多的解析,你可以走得更远,这是方法1做不到的。

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

      【讨论】:

        猜你喜欢
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        • 2020-04-23
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 2018-02-22
        • 2015-06-01
        相关资源
        最近更新 更多