为什么要为 binary:replace 使用 compile_pattern?

Why use a compile_pattern for binary:replace?

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

我怀疑这是出于性能原因,但我找不到任何官方声明。

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