go - 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)
}
返回:
解决方案
您可以将配置文件输出路径更改为当前工作目录,
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 目录中输出配置文件。
推荐阅读
- r - R中的只读镶木地板列名
- string - 如何保存我输入的字符串以便在 emu8086 中再次使用它?
- sed - sed 用另一个文件替换一个文件中的多行
- haproxy - Haproxy:在 url 中重复正则表达式组
- elixir - 如何使用 using 宏实现默认行为?
- javascript - 如何在 Spotify 小部件中嵌入 Facebook 像素?
- python - 画布出现在放置在顶部的框架上方
- c++ - 编译器错误 C2664 无法使用 std::make_shared 转换参数
- python - Pandas:如何仅删除列末尾的最后一个连字符
- google-forms - 如何根据其他用户过去的回复使 Google 表单自动填充?