- 前言
- Go 与操作系统
- Go 内部机制
- Go 基本数据类型
- 4 组合类型的使用
- 5 数据结构
- 6 Go package 中不为人知的知识
- 7 反射和接口
- 8 Go UNIX 系统编程
- 08.1 关于 UNIX 进程
- 08.2 flag 包
- 8.2 flag 包
- 08.3 io.Reader 和 io.Writer 接口
- 08.4 bufio 包
- 08.5 读取文本文件
- 08.6 从文件中读取所需的数据量
- 08.7 为什么我们使用二进制格式
- 08.8 读取 CSV 文件
- 08.9 写入文件
- 08.10 从磁盘加载和保存数据
- 08.11 再看strings包
- 08.12 关于bytes包
- 08.13 文件权限
- 08.14 处理 Unix 信号
- 08.15 Unix 管道编程
- 08.16 遍历目录树
- 08.17 使用 ePBF
- 08.18 关于 syscall.PtraceRegs
- 08.19 跟踪系统调用
- 08.20 User ID 和 group ID
- 08.21 其他资源
- 08.22 练习
- 08.23 总结
- 9 并发 Goroutines、Channel 和 Pipeline
- 10 Go 并发-进阶讨论
- 11 代码测试、优化及分析
- 12 Go 网络编程基础
- 13 网络编程 - 构建服务器与客户端
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
11.5.3 用于分析的第三方包
在这小节,您将看到一个设置分析环境的第三方包的使用,它比使用 runtime/pprof
标准包方便很多。这在 betterProfile.go
中有所体现,将分三部分来介绍。
betterProfile.go
的第一部分如下:
package main
import (
"fmt"
"github.com/pkg/profile"
)
var VARIABLE int
func N1(n int) bool {
for i := 2 ; i < n; i++ {
if (n % i) == 0 {
return false
}
}
return true
}
这段代码,您能看到使用了第三方包,在 github.com/pkg/profile
。您可以在 go get
命令的帮助下下载它,如下:
$ go get github.com/pkg/profile
betterProfile.go
的第二段代码如下:
func Multiply(a, b int) int {
if a == 1 {
return b
}
if a == 0 || b == 0 {
return 0
}
if a < 0 {
return -Multiply(-a, b)
}
return b + Multiply(a-1, b)
}
func main() {
defer profile.Start(profile.ProfilePath("/tmp")).Stop()
这个由 Dave Cheney 开发的 github.com/pkg/profile
包需要您插入一行声明来开启 CPU 分析 在您的 Go 应用中。如果您想开启 内存分析的话,您应该插入如下声明来代替:
defer profile.Start(profile.MemProfile).Stop()
这个程序余下代码如下:
total := 0
for i := 2; i < 200000; i++ {
n := N1(i)
if n {
total++
}
fmt.Println("Total: ", total)
}
total = 0
for i := 0; i < 5000; i++ {
for j := 0; j < 400; j++ {
k := Multiply(i, j)
VARIABLE = k
total++
}
}
fmt.Println("Total: ", total)
}
执行 betterProfile.go
产生如下输出:
$ go run betterProfile.go
2018/03/08 17:01:28 profile: cpu profiling enabled, /tmp/cpu.pprof
Total: 17984
Total: 2000000
2018/03/08 17:01:56 profile: cpu profiling disabled, /tmp/cpu.pprof
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论