كيفية تحديد المعايير باستخدام أداة بروف?
-
21-12-2019 - |
سؤال
أريد أن الملف الشخصي بلدي المعايير التي تم إنشاؤها بواسطة go test -c
, ، ولكن go tool pprof
يحتاج إلى ملف تعريف يتم إنشاؤه عادة داخل الوظيفة الرئيسية مثل هذا:
func main() {
flag.Parse()
if *cpuprofile != "" {
f, err := os.Create(*cpuprofile)
if err != nil {
log.Fatal(err)
}
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
}
كيف يمكنني إنشاء ملف تعريف ضمن معاييري ?
المحلول
كما هو موضح في http://golang.org/cmd/go/#hdr-Description_of_testing_flags يمكنك تحديد ملف التعريف باستخدام العلم -cpuprofile
.
على سبيل المثال
go test -cpuprofile cpu.out
نصائح أخرى
استخدام -cpuprofile
العلم إلى go test
كما هو موثق في http://golang.org/cmd/go/#hdr-Description_of_testing_flags
يشرح هذا المنشور كيفية تحديد المعايير مع مثال: التنميط القياسي مع بروف.
يحاكي المعيار التالي بعض أعمال وحدة المعالجة المركزية.
package main
import (
"math/rand"
"testing"
)
func BenchmarkRand(b *testing.B) {
for n := 0; n < b.N; n++ {
rand.Int63()
}
}
لإنشاء ملف تعريف وحدة المعالجة المركزية للاختبار القياسي ، قم بتشغيل:
go test -bench=BenchmarkRand -benchmem -cpuprofile profile.out
ال -memprofile
و -blockprofile
يمكن استخدام العلامات لإنشاء تخصيص الذاكرة وحظر ملفات تعريف المكالمات.
لتحليل الملف الشخصي استخدام أداة العودة:
go tool pprof profile.out
(pprof) top
Showing nodes accounting for 1.16s, 100% of 1.16s total
Showing top 10 nodes out of 22
flat flat% sum% cum cum%
0.41s 35.34% 35.34% 0.41s 35.34% sync.(*Mutex).Unlock
0.37s 31.90% 67.24% 0.37s 31.90% sync.(*Mutex).Lock
0.12s 10.34% 77.59% 1.03s 88.79% math/rand.(*lockedSource).Int63
0.08s 6.90% 84.48% 0.08s 6.90% math/rand.(*rngSource).Uint64 (inline)
0.06s 5.17% 89.66% 1.11s 95.69% math/rand.Int63
0.05s 4.31% 93.97% 0.13s 11.21% math/rand.(*rngSource).Int63
0.04s 3.45% 97.41% 1.15s 99.14% benchtest.BenchmarkRand
0.02s 1.72% 99.14% 1.05s 90.52% math/rand.(*Rand).Int63
0.01s 0.86% 100% 0.01s 0.86% runtime.futex
0 0% 100% 0.01s 0.86% runtime.allocm
عنق الزجاجة في هذه الحالة هو المزامنة ، والناجمة عن المصدر الافتراضي في الرياضيات/راند يجري مزامنة.
عروض الملف الشخصي الأخرى وتنسيقات الإخراج ممكنة أيضا ، على سبيل المثال. tree
.النوع help
لمزيد من الخيارات.
لاحظ أنه سيتم أيضا تحديد أي رمز تهيئة قبل حلقة المعيار.