当前位置: 首页 > news >正文

北京网站建设方案外包电影站的seo

北京网站建设方案外包,电影站的seo,wordpress编辑慢,建设工程信息网官网入口起因 被同事灵魂拷问:图中这块空白是什么东西? 豆包回答说是数据采样不完整,特定函数或代码段未被调用之类的原因,感觉都不太合理。 之前看过一篇文章说:Heap Profiling的采样是无时无刻不在发生的,执行…

起因

被同事灵魂拷问:图中这块空白是什么东西?
在这里插入图片描述

豆包回答说是数据采样不完整,特定函数或代码段未被调用之类的原因,感觉都不太合理。
之前看过一篇文章说:Heap Profiling的采样是无时无刻不在发生的,执行一次profiling仅仅是dump一下迄今为止的数据快照。这篇文章更加推翻了前面"数据采样不完整"的假设。那火焰图中的空白到底是啥,我们亲自试一下。

实验

参考:使用火焰图对 Go 程序进行性能分析

实验设计

在一个函数中调用另外的函数,在多种位置申请内存,查看火焰图的空白情况。

前置准备

  1. 安装环境
  2. 编写测试代码
  3. 在Goland中运行测试代码,可以通过 pprof 的 HTTP 接口访问http://localhost:8000/debug/pprof/heap?debug=1
  4. 在终端中执行以下命令,在页面中展示火焰图。其中,-http=":8081"表示用于查看火焰图的端口,http://localhost:8000/debug/pprof/heap表示采集的数据源。需要注意,每次运行此命令时,生成的是当前堆快照,如果代码有变更,或者想要获取最新结果,需要中断后重新运行此命令。
    go tool pprof -http=":8081" http://localhost:8000/debug/pprof/heap
  5. 火焰图分析方法:选择VIEW - Flame Graph (old)后,再选择SAMPLE - alloc_space。我们主要看这个,其它的选项也可以参考。
    在这里插入图片描述

函数调用关系

func allocate1() {allocate2()allocate3()
}

代码1:allocate1本身占用空间

package mainimport ("net/http"_ "net/http/pprof""time"
)func allocate1() {var s []stringfor i := 0; i < 10000; i++ {// allocate1占用的空间for i := 0; i < 10; i++ {s = append(s, "This is a sample string")}// allocate2占用的空间allocate2()// allocate3占用的空间allocate3()}
}func allocate2() {var s []stringfor i := 0; i < 10; i++ {s = append(s, "This is a sample string")}
}
func allocate3() {var s []stringfor i := 0; i < 10; i++ {s = append(s, "This is a sample string")}
}func main() {go func() {for {allocate1()time.Sleep(1 * time.Second)}}()http.ListenAndServe(":8000", nil)
}

生成的火焰图:
在这里插入图片描述

代码2:allocate本身不占空间

把13-15行注释掉,让allocate1不占空间

package mainimport ("net/http"_ "net/http/pprof""time"
)func allocate1() {//var s []stringfor i := 0; i < 10000; i++ {// allocate1占用的空间//for i := 0; i < 10; i++ {// s = append(s, "This is a sample string")//}// allocate2占用的空间allocate2()// allocate3占用的空间allocate3()}
}func allocate2() {var s []stringfor i := 0; i < 10; i++ {s = append(s, "This is a sample string")}
}
func allocate3() {var s []stringfor i := 0; i < 10; i++ {s = append(s, "This is a sample string")}
}func main() {go func() {for {allocate1()time.Sleep(1 * time.Second)}}()http.ListenAndServe(":8000", nil)
}

生成的火焰图:
在这里插入图片描述

结论

当allocate1本身占用空间的时候,火焰图中的空白存在。当allocate1本身不占用空间的时候,火焰图被填满,不存在空白。说明空白的部分是上一级函数内部对象占用的空间。

http://www.dinnco.com/news/34341.html

相关文章:

  • 荆门做网站的公司周口搜索引擎优化
  • 宿迁网站推广公司aso排名服务公司
  • 手机网站开发目的营销 推广
  • 做设计 素材网站有哪广东seo推广哪里好
  • 北京医疗网站建设公司女教师遭网课入侵视频大全
  • 京东上怎样做网站广告软文小故事800字
  • 公司网站数媒设计制作seo优化在线诊断
  • 有专门做预算的网站没营销课程培训都有哪些
  • wordpress登陆帐号报错404seo托管公司
  • 网站开发前台 后台技术百度识图网页版 在线
  • 网站开发研究综述通过百度指数不能判断出
  • 哈尔滨市建设工程质量安全站淘宝关键词排名查询网站
  • 四网合一网站建设软文推广发稿平台
  • 做货品批发的网站都有哪些全球网站排名查询
  • 黑群晖做网站抖音seo排名系统
  • 招投标网站的建设制作优化大师官方网站
  • 优化企业网站torrentkitty磁力搜索引擎
  • 网站规划与设计范文产品推广渠道有哪些
  • 怎么去掉网站首页尾缀网站建设公司哪家好?该如何选择
  • 武昌网站建设seo搜索引擎优化关键词
  • 网站建设存在的问题关键词优化意见
  • 集宁做网站优秀的软文广告欣赏
  • 网站建设攻略百度开发平台
  • 有口碑的企业网站建设交换链接的方法
  • 厚街网站建设报价推广网站怎么制作
  • 潍坊设计网站长春seo优化企业网络跃升
  • 长沙营销网站建设2022年新闻热点事件
  • 做棋牌网站建设多少钱seo怎么优化排名
  • 您的域名因未取得工信部网站备案号松原市新闻
  • 政府网站建设开发方案百度教育app