我正在我公司做Go培训,我想以最好的方式提供pprof包。我认为我的例子不足以简单地呈现pprof的力量。我想只使用go std库。代码应该给我 带有一些瓶颈的简化调用图。
我目前的工作流程如下: 1.在网络服务器中包含pprof 2.运行webserver(它将收集数据30秒(默认)) 3.向网络服务器运行一些卷曲镜头 4.目前的pprof图
我的代码如下所示:
package main
import (
"fmt"
"net/http"
_ "net/http/pprof"
)
func handler(w http.ResponseWriter, r *http.Request) {
for i := 0; i < 100000000; i++ {
w.Write([]byte(fmt.Sprintf("%d - %d, ", i, i)))
}
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
答案 0 :(得分:1)
字符串连接怎么样?它在我的机器上产生一个相当线性的图形。此外,这是一个很好的方式来教人们为什么他们应该通过追加[]byte
而不是连接字符串来构建字符串,从而产生大量的垃圾。
func handler(w http.ResponseWriter, r *http.Request) {
var s string
for i := 0; i < 100000; i++ {
s += strconv.Itoa(i)
}
w.Write([]byte(s))
}