6. Go 性能调优之 —— 总结

发布时间:2019-06-25 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了6. Go 性能调优之 —— 总结脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
原文链接:https://github.com/sxs2473/go...
本文使用 Creative Commons Attribution-ShareAlike 4.0 International 协议进行授权许可。

总结

保持简单

从最简单的代码开始

测量! 分析你的代码来找到瓶颈, 不要猜测 !

如果性能还不错, 收手吧 !你不需要优化所有的代码,只需要针对影响最大的部分就可以了。

不是程序的每部分都需要高性能

对于大多数关注性能的应用程序,适用80/20规则。80%的时间将花在20%的代码上。

随着应用程序的增长或业务发展,这些性能问题的重点将会变化。

不要留着对性能不重要的复杂代码,如果瓶颈转移到其他地方,就用更简单的实现重写它。

Go 编译器针对简单代码进行了优化

总是写你能写出的最简单的代码,编译器针对简单代码进行了优化。我不说 惯用的 ,因为我不喜欢我们在讨论 Go 时使用这个词。我只说简单,而不是 聪明 的代码。

更短的代码就是更快; Go 不是 C++,不要指望编译器解开复杂的抽象。

更短的代码体积更小;这对 CPU 的缓存很重要。

注意二次方复杂度的操作

If a PRogram is too slow, IT must have a loop -- Ken Thompson

大多数程序在少量数据的情况下表现良好。 这是 @L_126_2@ 思想背后的精髓

然而,当数据集很大时,任何接触输入集不止一次的东西,例如,对于集合中的每个元素,对集合中的每个其他元素进行测试,都有可能成为性能方面的大问题。

限制程序各部分之间的通信和协调点,以遵守 Amdahl定律

性能经验法则

网络/硬盘 io >> 内存分配 >> 函数调用 ( >> 表示远远大于,意味着数量级之间的差距)

如果您的程序主要工作是网络或硬盘访问,那么不要费心去优化内存分配方面的事情。重点关注如何利用缓冲和批处理,以减少等待IO的时间。

如果您的程序是主要工作是分配和管理内存,不要费心去优化函数内联、循环展开等事情。

注意内存分配的使用,尽量避免不必要的分配。

不要为了可靠性而牺牲性能

I can make things very fast if they don't have to be correct. -- Russ Cox

最后,不要为了可靠性而牺牲性能

Readable means reliable -- Rob Pike

性能和可靠性同样重要。

谢谢

脚本宝典总结

以上是脚本宝典为你收集整理的6. Go 性能调优之 —— 总结全部内容,希望文章能够帮你解决6. Go 性能调优之 —— 总结所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。