性能优化总结:

1 尽量避免频繁创建对象,即减少&{},new,make的使用
2 数组可当切片用,当需要使用切片时,可考虑能使用数组来减少切片的创建
3 当某类临时对象被多个协频繁程使用时,可用sync.pool做缓存
4 当某类临时对象被少量协程频繁使用时,可预先创建对象数组来减少零碎对象数量
5 单通道多协程的场景,可尝试多通道均分多协程实现(通道内部使用锁互斥,减少单条通道的协程数量可提高并发效率)
6 当协程数量达到万级,应控制协程数量(协程过多,对gc影响特大 go1.4)
7 由于调度影响,协程可预先创建的尽量预先创建,避免需要时创建,特别是响应延迟要求较低的逻辑

性能优化方法:

=======================CPU性能分析方法=========================

方式一:

对象:非web程序, 在程序中引入runtime/pprof包,并添加如下代码:

filename := "cpu_profile"           // 最好是在放在主函数中 test.pprof CPU分析文件

f, err := os.Create(filename)

if err != nil {

fmt.Println(err)

return

}

pprof.StartCPUProfile(f)

defer pprof.StopCPUProfile()

defer f.Close()

使用:终端执行 go tool pprof program_name cpu_profile

方式二:

对象:web程序,引入net/http/pprof包, 且web的路由处理为默认处理,若非默认路由,则为其添加如下类似路由处理:

func init() {

http.Handle("/debug/pprof/", http.HandlerFunc(Index))

http.Handle("/debug/pprof/cmdline", http.HandlerFunc(Cmdline))

http.Handle("/debug/pprof/profile", http.HandlerFunc(Profile))

http.Handle("/debug/pprof/symbol", http.HandlerFunc(Symbol))

}

ps:此段代码为net/http/pprof内代码,为自定义路由处理添加时将函数转换成pprof包的调用即可,如:Index  ==> pprof.Index

使用:浏览器访问上述路径即可,也可用 go tool pprof program_name http:xxx:xx/debug/pprof/profile进入命令行交互模式使用

方式三:

对象:应用程序或Test案例(可执行结束的), 进入工作目录使用如下命令:

Go test -cpuprofile filename net/http    // filename 为自定义文件名,会生成此文件和http.test文件

使用: go tool pprof http.test filename

================================GC性能分析方法===========================

设置环境变量:export GODEBUG=gctrace=1      // 具体数据含义百度~~

go程序性能优化的更多相关文章

  1. C++ 应用程序性能优化

    C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...

  2. Java程序性能优化技巧

    Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for ...

  3. 《Java程序性能优化:让你的Java程序更快、更稳定》

    Java程序性能优化:让你的Java程序更快.更稳定, 卓越网更便宜,不错的书吧

  4. [JAVA] java程序性能优化

    一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...

  5. iOS程序性能优化

    iOS程序性能优化 一.初级 使用ARC进行内存管理 在iOS5发布的ARC,它解决了最常见的内存泄露问题.但是值得注意的是,ARC并不能避免所有的内存泄露.使用ARC之后,工程中可能还会有内存泄露, ...

  6. [python]用profile协助程序性能优化

    转自:http://blog.csdn.net/gzlaiyonghao/article/details/1483728 本文最初发表于恋花蝶的博客http://blog.csdn.net/lanph ...

  7. iOS 程序性能优化

    前言 转载自:http://www.samirchen.com/ios-performance-optimization/ 程序性能优化不应该是一件放在功能完成之后的事,对性能的概念应该从我们一开始写 ...

  8. 微信小程序性能优化技巧

    摘要: 如果小程序不够快,还要它干嘛? 原文:微信小程序性能优化方案--让你的小程序如此丝滑 作者:杜俊成要好好学习 Fundebug经授权转载,版权归原作者所有. 微信小程序如果想要优化性能,有关键 ...

  9. [转]C#程序性能优化

    C#程序性能优化 1.显式注册的EvenHandler要显式注销以避免内存泄漏 将一个成员方法注册到某个对象的事件会造成后者持有前者的引用.在事件注销之前,前者不会被垃圾回收.   private v ...

  10. [深入浅出Cocoa]iOS程序性能优化

    本文转载至 http://blog.csdn.net/kesalin/article/details/8762032 [深入浅出Cocoa]iOS程序性能优化 罗朝辉 (http://blog.csd ...

随机推荐

  1. jQuery 实现上下,左右滑动

    前几天的任务:http://t.sina.com.cn/  的下滑效果. 渐变移动出足够的空白 -> 淡出最后一个 ->渐变移动出足够的空白 我们要做的是向左移动效果.这个效果用时需添加一 ...

  2. jquery_EasyUI的学习

    1 Accordion(可折叠标签) 1.1 实例 1.1.1 代码 <html> <head> <meta http-equiv="Content-Type& ...

  3. [RxJS] Filtering operators: skipWhile and skipUntil

    After takeUntil() and takeWhile() function, let's have a look on skipWhile() and skilUntil() functio ...

  4. hadoop文件的序列化

    目录 1.为什么要序列化? 2.什么是序列化? 3.为什么不用Java的序列化? 4.为什么序列化对Hadoop很重要? 5.Hadoop中定义哪些序列化相关的接口呢? 6.Hadoop 自定义Wri ...

  5. iOS-UITableCell详情

    iOS-UITableCell详情 表示UITableViewCell风格的常量有: UITableViewCellStyleDefault UITableViewCellStyleSubtitle ...

  6. linux device driver —— 字符设备

    现在对linux设备驱动还没有什么认识,跟着书上敲了一个字符驱动,这里把代码贴一下. 测试环境是 Ubuntu 16.04 64bit 驱动程序: #include <linux/fs.h> ...

  7. java格式处理工具类

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  8. xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Deve

    以上错误是因为安装了 xcode , 但并不是系统默认的位置, 所以可以使用以下命令把 xcode 的路径修改为你安装的位置即可 sudo xcode-select --switch /Applica ...

  9. 各大浏览器CSS Hack收集

    各大浏览器CSS Hack收集  >>>>>>>>>>>>>>>>>>>>> ...

  10. Python之路【第十篇】:HTML -暂无等待更新

    Python之路[第十篇]:HTML -暂无等待更新