zoukankan      html  css  js  c++  java
  • golang 使用pprof进行性能调优

    package main
    
    import "fmt"
    
    func lengthOfNonRepeatingSubStr(s string) int {
    	lastOccurred := make(map[rune]int)
    	start := 0
    	maxLength := 0
    	for i, ch := range []rune(s) {
    		if lastI, ok := lastOccurred[ch]; ok && lastI >= start {
    			start = lastI + 1
    		}
    		if i-start+1 > maxLength {
    			maxLength = i - start + 1
    		}
    		lastOccurred[ch] = i
    	}
    	return maxLength
    }
    
    func main() {
    	fmt.Println(lengthOfNonRepeatingSubStr("123123"))
    }
    

      随便写一个名字叫nonrepeat.go的文件,然后再写了一个nonrepeat_test.go

    package main
    
    import "testing"
    
    func BenchmarkLengthOfNonRepeatingSubStr(b *testing.B) {
    	for i := 0; i < b.N; i++ {
    		if lengthOfNonRepeatingSubStr("123123") != 3 {
    			b.Errorf("正确的值是:%d",3)
    		}
    	}
    }
    

      然后执行:

    go test -bench .  -cpuprofile cpu.out
    goos: darwin
    goarch: amd64
    pkg: gopcp.v2/chapter7/nonrepeat
    BenchmarkLengthOfNonRepeatingSubStr-4           10000000               225 ns/op
    PASS
    ok      gopcp.v2/chapter7/nonrepeat     2.646s
    

      

     nonrepeat go tool pprof cpu.out 
    Type: cpu
    Time: Apr 16, 2019 at 6:53pm (CST)
    Duration: 2.64s, Total samples = 2.28s (86.48%)
    Entering interactive mode (type "help" for commands, "o" for options)
    (pprof) 
    

      mac 上面还需要安装图形化的界面工具 https://www.macports.org/install.php ,实在不行参考 https://blog.csdn.net/qq_36847641/article/details/78224910 这个安装盒子

      

    (pprof) web
    Failed to execute dot. Is Graphviz installed? Error: exec: "dot": executable file not found in $PATH
    (pprof) 
    

      

    上面分析得出map 访问占用的性能比较高,可以换个用 slice 处理

  • 相关阅读:
    Redis-数据类型
    文件转二进制流拆分与组装
    word 文件转PDF 预览
    查询数据库还原时间
    Window10主机连接到Docker 中的mysql 数据库
    sqlServer 执行存储过程结果存表中
    启动mysql 镜像
    Java类型转换细节
    IDEA常用插件
    IDEA控制台中文乱码
  • 原文地址:https://www.cnblogs.com/jackluo/p/10719229.html
Copyright © 2011-2022 走看看