Golang学习资料参考
[ 2016/07/07 16:24 | by ipaddr ]
go语法学习:
https://tour.golang.org/welcome/1
官方类库查询:
https://golang.org/pkg/
golang web:
https://github.com/astaxie/build-web-application-with-golang
常见类库:
https://github.com/golang/go/wiki/Projects
IDE:
https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins
Golang常见数据结构:
https://github.com/Workiva/go-datastructures
[转] Go高性能编程技巧
[ 2016/07/07 16:20 | by ipaddr ]
英文原文地址:
中文摘要:
- 在高并发队列任务分发的场景中Ring Buffer比Channel的性能更好
- defer功能不是静态编译时提供的,而是运行时提供的,所以使用defer会产生一些额外的性能开销(了解就好,该用还是得用)
- encoding/json序列化是通过反射机制实现的,性能很差,可以使用ffjson生成encode/decode代码来提升性能。如果可能,使用MsgPack替代JSON,因为MsgPack性能更好。
- 在栈中创建对象比在堆中创建对象性能高,所以少用new来创建对象。需要创建大量临时对象的场景可以使用sync.Pool已减少GC的压力。
- 在性能要求特别高的并发访问同一个对象的场景中,可以通过增加padding的方式避免false sharing,提升CPU cache的命中率,从而提升性能。
- 考虑使用无锁的数据结构减少锁对并发性能造成的影响
- 只对关键节点进行优化,权衡优化和开发成本