首页 > 解决方案 > Go Profiling - 错误的文件

问题描述

我正在使用 github.com/pkg/profile 在 Go 中进行分析,当我运行我的代码时它正在创建文件,但返回来自示例页面代码,如何运行我的代码?提前致谢

代码:

package main

import (
    "fmt"
    "github.com/pkg/profile"
    "time"
)

func main() {

    defer profile.Start(profile.MemProfile).Stop()

    var inicio = time.Now().UnixNano()

    var text = "Olá Mundo!"

    fmt.Println(text)

    var fim = time.Now().UnixNano()

    fmt.Println(fim - inicio)

}

返回:

在此处输入图像描述

标签: goprofilingpprof

解决方案


您可以将配置文件输出路径更改为当前工作目录,

profile.ProfilePath(path)

如果您无法检索任何样本,则意味着您MemProfileRate的样本不够小,无法实际捕获微小的变化。

如果您分配的内存量较少,则将其设置MemProfileRate为较小的值,如果您分配的内存量很大,请保持默认值。如果您认为您捕获了较小的内存更改,请增加MemProfileRate.

profile.MemProfileRate(100)

当你使用包时你不应该忘记的一件事profile是你的电话应该被推迟。

defer profile.Start(xxx).Stop()

这是完整的程序。

package main

import (
    "os"

    "github.com/pkg/profile"
)

func main() {
    dir, _ := os.Getwd()
    defer profile.Start(profile.MemProfile, profile.MemProfileRate(100), profile.ProfilePath(dir)).Stop()
    //decrease mem profile rate for capturing more samples
    for i := 0; i < 10000; i++ {
        tmp := make([]byte, 100000)
        tmp[0] = tmp[1] << 0 //fake workload
    }
}

您还可以设置配置文件路径,以便在您当前的 workign 目录中输出配置文件。


推荐阅读