linux – Golang:什么是etext?

linux – Golang:什么是etext?,第1张

概述我已经开始介绍一些我的Go1.2代码,而顶级项目总是被命名为’etext’.我搜索过,但找不到很多关于它的信息,而不是它可能与Go例程中的调用深度有关.然而,我没有使用任何Go例程,’etext’仍占总执行时间的75%或更多. (pprof) top20 Total: 171 samples 128 74.9% 74.9% 128 74.9% etext 任何人都可以解释 我已经开始介绍一些我的Go1.2代码,而顶级项目总是被命名为’etext’.我搜索过,但找不到很多关于它的信息,而不是它可能与Go例程中的调用深度有关.然而,我没有使用任何Go例程,’etext’仍占总执行时间的75%或更多.
(pprof) top20 Total: 171 samples    128  74.9%  74.9%      128  74.9% etext

任何人都可以解释这是什么,如果有办法减少影响?

解决方法 我遇到同样的问题,然后我发现这个: pprof broken in go 1.2?.要验证它是一个真正的1.2错误我写了下面的“你好世界”程序:
package mainimport (    "fmt"    "testing")func BenchmarkPrintln( t *testing.B ){    TestPrintln( nil )}func TestPrintln( t *testing.T ){    for i := 0; i < 10000; i++ {            fmt.Println("hello " + " world!")    }}

你可以看到它只调用fmt.Println.

你可以用“go test -c”来编译.
运行“./test.test -test.bench. -test.cpuprofile = test.prof”
看到结果“go tool pprof test.test test.prof”

(pprof) top10Total: 36 samples  18  50.0%  50.0%       18  50.0% syscall.Syscall   8  22.2%  72.2%        8  22.2% etext   4  11.1%  83.3%        4  11.1% runtime.usleep   3   8.3%  91.7%        3   8.3% runtime.futex   1   2.8%  94.4%        1   2.8% MHeap_AllocLocked   1   2.8%  97.2%        1   2.8% fmt.(*fmt).padString   1   2.8% 100.0%        1   2.8% os.epipecheck   0   0.0% 100.0%        1   2.8% MCentral_Grow   0   0.0% 100.0%       33  91.7% System   0   0.0% 100.0%        3   8.3% _/home/xxiao/work/test.BenchmarkPrintln

上述结果是使用去1.2.1
然后我用同样的事情去1.1.1,得到以下结果:

(pprof) top10Total: 10 samples   2  20.0%  20.0%        2  20.0% scanblock   1  10.0%  30.0%        1  10.0% fmt.(*pp).free   1  10.0%  40.0%        1  10.0% fmt.(*pp).printFIEld   1  10.0%  50.0%        2  20.0% fmt.newPrinter   1  10.0%  60.0%        2  20.0% os.(*file).Write   1  10.0%  70.0%        1  10.0% runtime.MCache_Alloc   1  10.0%  80.0%        1  10.0% runtime.exitsyscall   1  10.0%  90.0%        1  10.0% sweepspan   1  10.0% 100.0%        1  10.0% sync.(*Mutex).Lock   0   0.0% 100.0%        6  60.0% _/home/xxiao/work/test.BenchmarkPrintln

你可以看到,1.2.1的结果没有什么意义.大部分时间都是Syscall和etext.而1.1.1结果正确.

所以我确信这是一个1.2.1的错误.而且我转而在我的实际项目中使用了1.1.1,我对现在的分析结果感到满意.

总结

以上是内存溢出为你收集整理的linux – Golang:什么是etext?全部内容,希望文章能够帮你解决linux – Golang:什么是etext?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存