码迷,mamicode.com
首页 > 其他好文 > 详细

Effective Erlang —— 二进制型的构造和匹配

时间:2015-08-18 15:35:41      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:

在 R12B 中,构造和匹配二进制型最自然的方式比前版中的要快得多。你可用如下简单的代码来构造一个二进制型:

这么写(在 R12B 中)/求别这么写(在 R12B 之前的版本中)

my_list_to_binary(List) -> my_list_to_binary(List, <<>>).
my_list_to_binary([H|T], Acc) -> my_list_to_binary(T, <<Acc/binary,H>>);
my_list_to_binary([], Acc) -> Acc.


在 R12B 之前的发行版中,在每次迭代中 Acc 都会被复制一次。在 R12B 中,Acc 只在第一次迭代中被复制,并且在此之后,会开辟额外的内存空间。在下一轮迭代中,H 被写入额外的内存。当额外的内存用满时,该二进制型会重新扩展更多的额外内存。被扩展的内存是二进制型的两倍大小,或者是256,无论哪个都比二进制型大。

匹配二进制型最自然的方式现在是最快的。

这么写(在 R12B 中)

my_binary_to_list(<<H,T/binary>>) -> [H|my_binary_to_list(T)];
my_binary_to_list(<<>>) -> [].

 

 

 

Effective Erlang —— 二进制型的构造和匹配

标签:

原文地址:http://www.cnblogs.com/bigwhite/p/4739220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!