内容简介:测试结果:
过早优化是万恶之源,这里都是黑魔法,不是性能瓶颈慎用
- 根据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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据结构与算法JavaScript描述
[美] Michael McMillan / 王群锋、杜 欢 / 人民邮电出版社 / 2014-8 / 49.00元
通过本书的学习,读者将能自如地选择最合适的数据结构与算法,并在JavaScript开发中懂得权衡使用。此外,本书也概述了与数据结构与算法相关的JavaScript特性。 本书主要内容如下。 数组和列表:最常用的数据结构。 栈和队列:与列表类似但更复杂的数据结构。 链表:如何通过它们克服数组的不足。 字典:将数据以键-值对的形式存储。 散列:适用于快速查找和检索。......一起来看看 《数据结构与算法JavaScript描述》 这本书的介绍吧!
Markdown 在线编辑器
Markdown 在线编辑器
正则表达式在线测试
正则表达式在线测试