当前位置:  开发笔记 > 编程语言 > 正文

什么是二次过程?

如何解决《什么是二次过程?》经验,为你挑选了1个好方法。

我正在阅读Go编程语言书(由Donovan和Kernighan撰写)和他们的示例echo1,他们说:" 这是一个二次过程,如果参数的数量很大,可能代价很高,但对于回声来说,这不太可能 ".二次过程意味着什么?如果参数的数量很大,它是多么昂贵?

谢谢.



1> jussius..:

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


但是,如果你将它扩展为连接"H","e","l","l","o","W","o","r","l"和"d",你还在使用`+`(或`+ =`)运算符,现在我们遇到了问题.你从"H"+"e"开始,制作一个长度为2的新数组,复制为"H"和"e".现在你有了"他"+"我".长度为3的新数组,复制在"He"中,然后复制为"l".重复,直到你没有字符串.您每次都在创建一个新数组,因为字符串是不可变的,因此连接必须创建一个新字符串,从而创建一个新的底层数组.这意味着很多分配和复制,特别是对于早期的字符串.
推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有