【发布时间】:2014-06-15 01:35:03
【问题描述】:
我是 Golang 的新手。
我应该始终避免appending 切片吗?
我需要在内存中加载一个换行符分隔的数据文件。 考虑到性能,我应该计算行数,然后将所有数据加载到预定义的长度数组中,还是可以只将行附加到切片?
【问题讨论】:
-
go 附带了很好的分析工具。您会看到附加已经足够好,因此它通常是最快的解决方案。
标签: arrays performance go slice
我是 Golang 的新手。
我应该始终避免appending 切片吗?
我需要在内存中加载一个换行符分隔的数据文件。 考虑到性能,我应该计算行数,然后将所有数据加载到预定义的长度数组中,还是可以只将行附加到切片?
【问题讨论】:
标签: arrays performance go slice
您应该停止考虑性能并开始衡量应用程序的实际瓶颈是什么。
对于诸如“由于性能而应该做/避免 X”之类的问题有什么建议吗?在 50% 的情况下是无用的,在 25% 的情况下会适得其反。
有一些非常一般的建议,例如“不要不必要地产生垃圾”,但您的问题无法回答,因为这在很大程度上取决于您的文件大小:
[]string 切片 4 次(或者最初是您 make([]string,0,100) 的 0 次)要多。 string 只是两个字。你看:关于性能的一般建议是一个糟糕的建议,所以我不会给出。
【讨论】: