性能调优
今天,我的学习目标是go语言编程高性能调优
go语言性能调优
命名格式
对于一个学习编程语言有一段时间的选手来说,知道一本编程语言的各种命名格式是在熟悉不过的事了.
定义一个变量,go语言规定使用英文字母,数字,&和下划线命名,但不能以数字开头.变量的除第一个单词外其他单词的首字母都需要大写.定义一个包,我们都使用小写字母,不允许出现大写字母.定义一个常量,我们习惯全部使用大写字母.变量命名时应该保持清楚的名称含义,而不是单纯的使用魔数,结果开发人员不清楚其真正含义,这样会极大的影响程序的可阅读性.
注释风格
团队协作时,在一段代码中添加合理的注释显得尤为重要,我们写的程序需要有很高的维护性和扩展性.程序不是给机器看到,而是需要开发人员不断修改程序,优化性能.所以,我们需要养成良好的注释习惯.
我建议在程序开始的地方完成一段文本注释,其格式是"/** 注释主体*/".中间用来描述该文本中程序的变量,功能,作者,创建时间和最新修改时间.这样方便之后的开发人员详细了解整个程序的信息.
在控制程序块中,我们需要写清楚程序不同的功能和程序开发中出现的问题.在定义变量时,我们需要写清楚变量的意义.比如,定义时间dealine意思时截止时间,使用t定义时就难以表达真实意思.
代码跟踪
性能调优或修改bug时,代码跟踪是一个不错的方法.在编写一个程序时,我们往往需要顾忌程序的时间复杂度和空间复杂度.设计程序时,我们需要注意程序的内训使用量,函数调用次数.在go语言中使用benchmark功能(命令:"go test -bench -.benchmem")可以实时监测程序的内存,函数调用情况.
实战
我测试一个课堂上的程序程序,发现程序存在loop变量存储数据出现内存溢出的状况,于是,我采用了int64的整数类型存储成功显示了不同动物的活动状况.但我发现该程序的内存占用率极高,非常影响计算机的正常运行.
我下载了一个pprof专业工具监测了程序运行状况.发现是程序自身将多个动物程序以线程的形式运行,过程了多线程并发执行,但又没有加Mutex-锁,出现线程堵塞现象,和锁竞争现象.
感受
今天,我学习了go语言语句调优和项目调优,增加了项目开发经验,增长了程序bug修复能力,之后还有许多项目还未优化,我会逐个将其完成,相信那句话,两岸猿声啼不住,轻舟已过万重山.