【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 大小

目录
相关文章
|
1月前
|
缓存 人工智能 算法
不同业务怎么选服务器?CPU / 内存 / 带宽配置表
本文详解了服务器三大核心配置——CPU、内存、带宽,帮助读者快速理解服务器性能原理。结合不同业务场景,如个人博客、电商、数据库、直播等,提供配置选择建议,并强调合理搭配的重要性,避免资源浪费或瓶颈限制。内容实用,适合初学者和业务选型参考。
400 0
|
3月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
1037 0
|
7天前
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
|
5月前
|
人工智能 数据可视化 编译器
Go interface实现分析
本文深入探讨了Go语言中接口的定义、实现及性能影响。接口作为一种“约定”,包含方法签名集合,无需依赖具体类型即可调用方法,隐藏了内部实现细节。文章分析了接口的两种实现方式(iface和eface)、按值与按指针实现的区别,以及nil接口与普通nil的区别。同时,通过反汇编代码对比了接口动态调用与类型直接调用的性能差异,指出接口调用存在内存逃逸和无法内联的问题。最后总结了接口的优势与局限性,强调在实际开发中需根据场景合理选择是否使用接口。
114 13
|
2月前
|
弹性计算 前端开发 NoSQL
2025最新阿里云服务器配置选择攻略:CPU、内存、带宽与系统盘全解析
本文详解2025年阿里云服务器ECS配置选择策略,涵盖CPU、内存、带宽与系统盘推荐,助你根据业务需求精准选型,提升性能与性价比。
|
3月前
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
311 0
|
5月前
|
Go 开发者
Go语言内存共享与扩容机制 -《Go语言实战指南》
本文深入探讨了Go语言中切片的内存共享机制与自动扩容策略。切片作为动态数组的抽象,其底层结构包含指针、长度和容量。多个切片可能共享同一底层数组,修改一个切片可能影响其他切片。当切片容量不足时,`append`会触发扩容,新容量按指数增长以优化性能。为避免共享导致的副作用,可通过`copy`创建独立副本或在函数中使用只读方式处理。最后总结了最佳实践,帮助开发者高效使用切片,写出更优代码。
156 10
|
5月前
|
Go 调度
GO语言函数的内部运行机制分析
以上就是Go语言中函数的内部运行机制的概述,展示了函数在Go语言编程中如何发挥作用,以及Go如何使用简洁高效的设计,使得代码更简单,更有逻辑性,更易于理解和维护。尽管这些内容深入了一些底层的概念,但我希望通过这种方式,将这些理论知识更生动、更形象地带给你,让你在理解的同时找到编程的乐趣。
86 5
|
6月前
|
存储 监控 算法
员工行为监控软件中的 Go 语言哈希表算法:理论、实现与分析
当代企业管理体系中,员工行为监控软件已逐步成为维护企业信息安全、提升工作效能的关键工具。这类软件能够实时记录员工操作行为,为企业管理者提供数据驱动的决策依据。其核心支撑技术在于数据结构与算法的精妙运用。本文聚焦于 Go 语言中的哈希表算法,深入探究其在员工行为监控软件中的应用逻辑与实现机制。
159 14

热门文章

最新文章

下一篇
开通oss服务