【go 语言】PProf 的使用——CPU和内存占用分析(二)

简介: PProf 的使用——CPU和内存占用分析(二)

正文


一、原代码


package main
import (
    "log"
    "net/http"
    _ "net/http/pprof"
    "time"
)
var datas []string
func main() {
    go func() {
        for {
            log.Printf("len: %d", Add("qijing"))
            time.Sleep(time.Millisecond * 10)
        }
    }()
    _ = http.ListenAndServe("0.0.0.0:2022", nil)
}
func Add(str string) int {
    data := []byte(str)
    datas = append(datas, string(data))
    return len(datas)
}


12.webp.jpg


二、CPU 占用分析


项目更目录下执行 go tool pprof http://127.0.0.1:2022/debug/pprof/profile?seconds=30,结束之后会默认进入 PProf 的命令行交互模式,接着输入 top 10,如下图,

13.webp.jpg


  • flat: 函数自身的运行耗时。
  • flat%: 函数自身占 CPU 运行总耗时的比例。
  • sum%: 函数自身累积使用占 CPU 运行总耗时的比例。
  • cum: 函数自身及其调用的函数的运行总耗时。
  • cum%: 函数自身及其调用的函数占 CPU 运行总耗时的比例
  • Name: 函数名。


三、内存占用分析


项目根目录下执行 go tool pprof http://127.0.0.1:2022/debug/pprof/heap,结束之后会默认进入 PProf 的命令行交互模式,接着输入 top,如图所示,


14.webp.jpg


  • flat: 函数自身占内存大小。
  • flat%: 函数自身占总分配内存的比例。
  • sum%: 函数自身累积占用内存占总内存的比例。
  • cum: 函数自身及其调用的函数占内存大小
  • cum%: 函数自身及其调用的函数占总内存的比例。
  • Name: 函数名。


上面可以看到,main.main.fun1cum 大小正好等于自身的 flat 大小加上 main.Add 大小的 flat 大小

目录
相关文章
|
11月前
|
缓存 人工智能 算法
不同业务怎么选服务器?CPU / 内存 / 带宽配置表
本文详解了服务器三大核心配置——CPU、内存、带宽,帮助读者快速理解服务器性能原理。结合不同业务场景,如个人博客、电商、数据库、直播等,提供配置选择建议,并强调合理搭配的重要性,避免资源浪费或瓶颈限制。内容实用,适合初学者和业务选型参考。
1508 0
|
10月前
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
1103 11
|
10月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
452 2
|
10月前
|
设计模式 缓存 Java
【JUC】(4)从JMM内存模型的角度来分析CAS并发性问题
本篇文章将从JMM内存模型的角度来分析CAS并发性问题; 内容包含:介绍JMM、CAS、balking犹豫模式、二次检查锁、指令重排问题
244 1
|
12月前
|
弹性计算 前端开发 NoSQL
2025最新阿里云服务器配置选择攻略:CPU、内存、带宽与系统盘全解析
本文详解2025年阿里云服务器ECS配置选择策略,涵盖CPU、内存、带宽与系统盘推荐,助你根据业务需求精准选型,提升性能与性价比。
|
12月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
677 0
|
12月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
499 0
|
12月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
524 0
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
3459 0
|
存储 缓存 NoSQL
内存管理基础:数据结构的存储方式
数据结构在内存中的存储方式主要包括连续存储、链式存储、索引存储和散列存储。连续存储如数组,数据元素按顺序连续存放,访问速度快但扩展性差;链式存储如链表,通过指针连接分散的节点,便于插入删除但访问效率低;索引存储通过索引表提高查找效率,常用于数据库系统;散列存储如哈希表,通过哈希函数实现快速存取,但需处理冲突。不同场景下应根据访问模式、数据规模和操作频率选择合适的存储结构,甚至结合多种方式以达到最优性能。掌握这些存储机制是构建高效程序和理解高级数据结构的基础。
1161 1

热门文章

最新文章