内容简介:测试结果:
过早优化是万恶之源,这里都是黑魔法,不是性能瓶颈慎用
- 根据pprof数据优化
-
尽量避免GC,所以要避免创建过多的对象,也可以通过设置
GOGC环境变量来增加触发GC的阈值,缺点是费内存。 - 尽量的复用已经创建的对象,其中就包括如果可以的话,预先创建好对象。参考: https://golang.org/pkg/sync/#Pool
- 避免锁,可以考虑 CAS。 https://golang.org/pkg/sync/atomic/
- 如果可以的话,用struct代替map。一个简单的例子就可以说明:
package main
type structDemoStruct struct {
First int
}
var (
mapDemo = make(map[int]int, 1)
structDemo = structDemoStruct{}
)
func mapIncr() {
mapDemo[1]++
}
func structIncr() {
structDemo.First++
}
package main
import (
"testing"
)
func BenchmarkMap(b *testing.B) {
for i := 0; i < b.N; i++ {
mapIncr()
}
}
func BenchmarkStruct(b *testing.B) {
for i := 0; i < b.N; i++ {
structIncr()
}
}
测试结果:
$ go test -bench . goos: linux goarch: amd64 BenchmarkMap-4 100000000 20.5 ns/op BenchmarkStruct-4 1000000000 2.02 ns/op PASS ok _/home/jiajun/tests 4.299s
defer time.Now []byte GOGC
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JSP & Servlet学习笔记
【台湾】林信良 / 清华大学出版社 / 2012-5 / 58.00元
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做了全面更新。书中详细介绍了Servlet/ JSP与Web容器之间的关系,必要时从Tomcat源代码分析,了解Servlet/ JSP如何与容器互动。本书还涵盖了文本处理......一起来看看 《JSP & Servlet学习笔记》 这本书的介绍吧!