什么是二次过程?

What is a quadratic process?

我正在阅读 Go 编程语言书籍(由 Donovan 和 Kernighan 撰写)以及他们的示例 echo1,他们说:“这是一个二次过程,如果数量参数很大,但对于 echo,这不太可能”。二次过程是什么意思?如果参数的数量很大,它的成本如何?

谢谢。

一般来说,二次是指与平方数有关的东西。在这种情况下,这意味着过程成本与输入大小的平方成正比。这是因为字符串是使用 += 运算符连接的,这在 Go 中是昂贵的,因为字符串是不可变的,并且每次连接时都必须在内存中创建一个新字符串。连接字符串的更有效方法包括写入 bytes.Buffer 并将其转换为字符串,或使用 strings.Join 函数