为什么要将compile_pattern用于二进制文件:replace?

时间:2015-10-27 16:01:25

标签: performance erlang

是否有任何文档说明为什么应该使用compile_pattern/1结果作为binary:replace/4搜索的模式?

我怀疑这是出于性能原因,但我无法找到任何正式声明的内容。

1 个答案:

答案 0 :(得分:6)

我不知道任何明确说明它的文档,但是是的,这是出于性能原因。如果将未编译的模式传递给binary模块中的调用,它们将编译模式然后使用它。这意味着对于单次使用,首先编译并不重要,因为无论如何调用都会编译它。但是如果你使用相同的模式执行多个匹配或替换,那么有必要先预先编译它,然后将编译后的模式传递给每个调用。