在 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(<<>>) -> [].
时间: 2024-10-24 02:12:20