2012-05-16 89 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函數來測試它。