iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >分析跨多次运行的 Go 程序
  • 681
分享到

分析跨多次运行的 Go 程序

2024-04-05 00:04:47 681人浏览 薄情痞子
摘要

最近发现不少小伙伴都对golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《分析跨多次运行的 Go 程序》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,

最近发现不少小伙伴都对golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《分析跨多次运行的 Go 程序》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我想分析 go 程序在具有不同操作系统级别设置的不同运行之间的性能。我知道我可以通过 $ go test -cpuprofile cpu.prof -memprofile mem.prof -bench . 获取单次运行的配置文件。但是,我不知道如何聚合信息,以便可以直观地或以编程方式比较结果。

用 xonsh 脚本语言呈现一个草图,该语言是 python 和 bash 之间的克里奥尔语。不过,我也很乐意接受用纯 bash 编写的建议。

for i in range(n):
    change_system_settings()
    # Run 'go test' and save the results in cpu0.prof, cpu1.prof, cpu2.prof etc. 
    @(f'go test -cpuprofile cpu{i}.prof -memprofile mem{i}.prof -bench .'.split())

该脚本更改系统设置并通过探查器运行程序 n 次。现在,在这个过程之后,我可能留下了几十个单独的 .prof 文件。我想对它们有一个整体的了解,比较运行之间的内存和 cpu 使用情况,甚至运行数值测试来看看哪个运行是最佳的。


正确答案


如果您使用 golang 的 pprof 来分析您的 go 程序,该库有一个 merge 方法,可以将多个 pprof 输出文件合并为一个。

该库是 GitHub.com/google/pprof,因此您只需将其导入 go 脚本即可:

import ('github.com/google/pprof/profile')

然后您需要将所有 pprof 文件加载到一个数组中。如果我们认为您这样做了,并且您已将所有文件加载(使用 os.open())到名为 allfiles 的数组中,则可以使用以下方法合并它们:

result, err := profile.Merge(allFiles)

然后,使用 os.openfile(...) 将合并的数据输出到一个新文件中,写入该文件,然后关闭它。

老实说,我现在还没有对此进行测试,但我记得很久以前我们就是这样做的。因此从技术上讲,您可以在测试脚本中完成 for 循环后调用此 golang 脚本。

文档:https://github.com/google/pprof/blob/master/doc/README.md

以上就是《分析跨多次运行的 Go 程序》的详细内容,更多关于的资料请关注编程网公众号!

您可能感兴趣的文档:

--结束END--

本文标题: 分析跨多次运行的 Go 程序

本文链接: https://www.lsjlt.com/news/596051.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 分析跨多次运行的 Go 程序
    最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《分析跨多次运行的 Go 程序》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,...
    99+
    2024-04-05
  • 微信小程序运行流程实例分析
    本文小编为大家详细介绍“微信小程序运行流程实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序运行流程实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一.微信小程序是啥本质其实就是(混合)的a...
    99+
    2023-06-26
  • goland怎么运行go程序
    goland中运行go程序的方法:1、打开goland工具;2、使用goland打开go项目;3、在src中打开需要运行的项目文件;4、在编辑器的右上角找到“Edit Configurations”并点击进入;5、在弹出的窗口中点击“+”号...
    99+
    2024-04-02
  • vscode怎么运行go程序
    要在VSCode中运行Go程序,您需要按照以下步骤操作:1. 安装Go语言环境:在您的计算机上安装Go语言环境。您可以从Go官方网站...
    99+
    2023-10-23
    vscode go
  • 从Hello World分析web程序运行机制
    这篇文章主要讲解了“从Hello World分析web程序运行机制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“从Hello World分析web程序运行机...
    99+
    2024-04-02
  • 分析Android微信小程序开发的运行机制
    这篇文章主要讲解了“分析Android微信小程序开发的运行机制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“分析Android微信小程序开发的运行机制”吧!...
    99+
    2024-04-02
  • pycharm怎么运行多个程序
    在 pycharm 中运行多个程序的方法有两种:使用“运行”配置或使用 python 控制台,例如使用 subprocess 模块创建新进程并运行 python 程序。 PyCharm...
    99+
    2024-04-17
    python pycharm
  • 在Colaboratory上运行Go程序的详细过程
    前言 有一次,在逛 youtube 时,看到有个播主直接在文档上运行代码片段。 这把我一下子整蒙了,这是什么神操作? 一番搜索之后,知道了这是 Google 的一个服务 Colabo...
    99+
    2024-04-02
  • 如何运用大数据分析优化ASP程序的运行效率?
    在当今的互联网时代,网站的用户体验和性能是非常重要的。ASP(Active Server Pages)是一种用于创建动态网页的服务器端脚本语言。当我们使用ASP开发网站时,我们通常需要考虑如何优化ASP程序的运行效率。本文将介绍如何使用大...
    99+
    2023-08-22
    二维码 大数据 编程算法
  • Java线程运行的示例分析
    这篇文章将为大家详细讲解有关Java线程运行的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。栈与栈帧JVM中由堆、栈、方法区所组成,其中栈内存就是分配给线程使用的,每个线程启动后,虚拟机都会为其分...
    99+
    2023-06-29
  • Python如何运行过程的分析
    这篇文章主要介绍了Python如何运行过程的分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
  • Go 语言分布式编程教程:让你的程序规模化运行!
    随着互联网技术的快速发展,分布式系统成为了当前互联网领域中最受欢迎的架构之一。而 Go 语言作为一种高效、可靠、易于编写的编程语言,也成为了分布式系统开发者的首选语言。本篇文章将为大家介绍如何使用 Go 语言编写分布式系统,并演示一些示例...
    99+
    2023-08-26
    分布式 教程 面试
  • Anaconda Navigator打不开,再次运行显示程序已在运行的解决办法
    一.问题描述          安装好anaconda后,运行Anaconda Navigator一直显示绿圈圈loading,点击绿色圆圈后加载界面消失,再次运行Anaconda Navigator,显示Anaconda Navigato...
    99+
    2023-09-22
    python 开发语言
  • Go 语言中运行 C程序 代码
    前言: 在前面多篇 Go 系列文章中,我们了解到,Go 语言脱胎于 C 语言,这就意味着在某些更底层的细节中,我们可以使用 C 语言实现,然后通过 Go 来调用相关的 C 代码。其实...
    99+
    2024-04-02
  • 无法从 Go 应用程序运行“op”
    php小编鱼仔在使用Go语言开发应用程序时,可能会遇到一个常见的问题,即无法从Go应用程序运行"op"。这个问题可能会导致应用程序无法正常运行或出现错误信息。解决这个问题的方法有很多种...
    99+
    2024-02-10
    go语言
  • WCF编程运行举例分析
    这篇文章主要介绍“WCF编程运行举例分析”,在日常操作中,相信很多人在WCF编程运行举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”WCF编程运行举例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-17
  • 运行3000次都不出错的MIT6.824 Raft 实验示例分析
    运行3000次都不出错的MIT6.824 Raft 实验示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前几天在分布式系统交流群里,小伙...
    99+
    2024-04-02
  • 怎么进行Spark example的运行过程分析
    这篇文章将为大家详细讲解有关怎么进行Spark example的运行过程分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。pom.xml<project xmlns="htt...
    99+
    2023-06-03
  • Java多线程程序的示例分析
    今天就跟大家聊聊有关Java多线程程序的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。我们在使用Java多线程程序的时候会遇到不少的问题,当我们解决这个问题的时候在源代码中就...
    99+
    2023-06-17
  • 浅谈多线程_让程序更高效的运行
    Java Thread 的一些认识:Java是抢占式线程,一个线程就是进程中单一的顺序控制流,单个进程可以拥有多个并发任务,其底层是切分CPU时间,多线程和多任务往往是使用多处理器系统的最合理方式进程可以看作一个程序或者一个应用;线程是进程...
    99+
    2023-05-31
    多线程 更高
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作