Go语言性能优化实战

栏目: Go · 发布时间: 6年前

内容简介:测试结果:

过早优化是万恶之源,这里都是黑魔法,不是性能瓶颈慎用

  • 根据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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人月神话

人月神话

弗雷德里克.布鲁克斯 / UMLChina翻译组、汪颖 / 清华大学出版社 / 2007-9 / 48.00元

在软件领域,很少能有像《人月神话》一样具有深远影响力和畅销不衰的著作。Brooks博士为人们管理复杂项目提供了最具洞察力的见解,既有很多发人深省的观点,又有大量软件工程的实践。本书内容来自Brooks博士在IBM公司SYSTEM/360家族和OS/360中的项目管理经验,该项目堪称软件开发项目管理的典范。该书英文原版一经面世,即引起业内人士的强烈反响,后又译为德、法、日、俄、中、韩等多种文字,全球......一起来看看 《人月神话》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具