قم بتحسين أداء برامج Go الخاصة بك باستخدام تقنية التنميط.

التنميط هي تقنية شائعة الاستخدام في دورة تطوير البرامج لتحليل أداء ملف عادة للمقارنة بين البرامج أو لتحديد الاختناقات ومجالات التحسين من أجل أ برنامج. يتضمن التنميط قياس وتحليل المقاييس المختلفة مثل استخدام الذاكرة واستخدام وحدة المعالجة المركزية ووقت التنفيذ وإحصائيات أخرى على مستوى النظام.

يهدف التنميط إلى تحديد أجزاء البرنامج التي تستهلك معظم الموارد بحيث يمكن تحسينها للحصول على أداء أفضل. يمكن أن يساعد التنميط أيضًا في تصحيح الأخطاء وتحسين إدارة الذاكرة وضبط التزامن.

التنميط في Go

هناك العديد من الأدوات للتنميط في Go. تتضمن بعض الأدوات الشائعة أداة تصنيف pprof المضمنة في Go وحزم الطرف الثالث الشائعة مثل Go Tool Trace و Go-Torch حزم.

ال pprof الحزمة هي جزء من مدة العرض طَرد. ال pprof توفر الحزمة وظائف لكتابة بيانات التنميط في وقت التشغيل بتنسيقات مثل pprof يمكن أن تفسر أداة التصور.

إليك كيفية استيراد ملف pprof حزمة في برامج Go الخاصة بك:

يستورد"pprof"

يوفر Go العديد من الأوامر والأعلام للعمل مع شفرة المصدر. قم بتشغيل ما يلي أداة الأمر للوصول إلى نتائج التنميط بتنسيقات مختلفة.

instagram viewer
يذهب أداة pprof

يقوم الأمر بإخراج تفاصيل الاستخدام الخاصة بملف pprof يأمر.

تشكيل وحدة المعالجة المركزية في Go

يقيس تعريف وحدة المعالجة المركزية الوقت الذي يقضيه البرنامج أثناء تنفيذ الوظائف. يعد تعريف وحدة المعالجة المركزية مفيدًا لتحديد أجزاء التعليمات البرمجية التي تستهلك معظم وقت وحدة المعالجة المركزية.

ال pprof توفر الحزمة وظائف لتجميع ملفات تعريف وحدة المعالجة المركزية ، وبدء وإيقاف تشكيل وحدة المعالجة المركزية ، ووظيفة لكتابة بيانات ملف التعريف إلى الملفات.

فيما يلي كيفية بدء وإيقاف ملف تعريف وحدة المعالجة المركزية وكتابة البيانات في ملف تعريف:

يستورد (
"نظام التشغيل"
"وقت التشغيل / pprof"
)

funcرئيسي() {
f ، يخطئ: = os. يخلق("cpu_profile.prof")
لو يخطئ! لا شيء {
ذعر(يخطئ)
}
تأجيل F. يغلق()

يخطئ = pprof. StartCPUProfile (f)
لو يخطئ! لا شيء {
ذعر(يخطئ)
}
تأجيل pprof. StopCPUProfile ()

// الكود المراد وصفه
}

ال رئيسي تقوم الوظيفة بإنشاء ملف وإغلاق دفق الملف بامتداد تأجيل البيان و يغلق وظيفة مثيل الملف. ال StartCPUProfile تبدأ الوظيفة ملف تعريف وحدة المعالجة المركزية وتكتب البيانات إلى الملف ، و StopCPUProfile يغلق دفق الملف الشخصي بامتداد تأجيل إفادة. بعد بدء وإيقاف ملف تعريف وحدة المعالجة المركزية ، يمكنك المتابعة لكتابة الكود الذي تريد تحليله.

إليكم نتيجة تشغيل pprof الأمر بملف الملف الشخصي من البرنامج:

تشغيل pprof الأمر مع ملف يبدأ قذيفة تفاعلية تسمح لك باستكشاف بيانات التنميط. يمكنك استخدام أوامر مثل قمة و قائمة لعرض الوظائف التي تستغرق معظم الوقت في تنفيذها.

التنميط الذاكرة في الذهاب

تحديد سمات الذاكرة هي تقنية تستخدم لتحديد تسرب الذاكرة واستخدام الذاكرة المكلف في الكود عن طريق قياس استخدام الذاكرة للوظائف في الكود.

يمكنك بدء ملف تعريف ذاكرة بامتداد WriteHeapProfile وظيفة. ال WriteHeapProfile تأخذ الوظيفة مثيل الملف وتكتب بيانات ملف التعريف إلى الملف.

يستورد (
"نظام التشغيل"
"وقت التشغيل / pprof"
)

funcرئيسي() {
f ، يخطئ: = os. يخلق("mem_profile.prof")
لو يخطئ! لا شيء {
ذعر(يخطئ)
}
تأجيل F. يغلق()

يخطئ = pprof. WriteHeapProfile (f)
لو يخطئ! لا شيء {
ذعر(يخطئ)
}

// الكود المراد وصفه
}

ال رئيسي تقوم الوظيفة بإنشاء ملف تعريف ، و WriteHeapProfile تأخذ الدالة مثيل الملف كوسيطة وتقوم بإرجاع نوع خطأ كتابة بعد الكتابة إلى الملف. يمكنك كذلك التعامل مع الخطأ وفقا لمتطلباتك.

كتلة التنميط مع Go

يقيس تشكيل الكتلة وقت انتظار البرنامج للأساسيات التزامن ، مثل كائنات المزامنة والقنوات. يعد إنشاء ملفات تعريف الكتلة مفيدًا لتحديد أجزاء التعليمات البرمجية التي قد تتسبب في الحظر.

ال ابحث عن تقوم الدالة بإرجاع ملف التعريف باسم سلسلة محددة ، و اكتب ل وظيفة ابحث عن وظيفة يكتب لقطة بتنسيق pprof للملف الشخصي.

فيما يلي كيفية تنفيذ التنميط الكتل لبرامج Go الخاصة بك:

يستورد (
"نظام التشغيل"
"وقت التشغيل / pprof"
)

funcرئيسي() {
f ، يخطئ: = os. يخلق("block_profile.prof")
لو يخطئ! لا شيء {
ذعر(يخطئ)
}
تأجيل F. يغلق()

يخطئ = pprof. ابحث عن("حاجز") .WriteTo (f ، 0)
لو يخطئ! لا شيء {
ذعر(يخطئ)
}

// الكود المراد وصفه
}

يقوم البرنامج بإنشاء ملف لتخزين بيانات ملف تعريف الكتلة ، ويبحث عن الكتل بامتداد ابحث عن وظيفة ، ويكتب بيانات ملف تعريف الكتلة إلى الملف.

تتبع التنميط مع Go

تتبع التنميط هي تقنية لقياس تنفيذ البرنامج ، بما في ذلك جدولة goroutine واستدعاءات النظام. يعد تحديد سمات التتبع مفيدًا في تحديد معوقات الأداء وفهم التفاعلات بين أجزاء البرنامج المختلفة.

ال يتعقب توفر الحزمة وظائف لتتبع التنميط. هذه الحزمة هي أيضًا جزء من مدة العرض طَرد.

يستورد (
"نظام التشغيل"
"وقت التشغيل / التتبع"
)

funcرئيسي() {
f ، يخطئ: = os. يخلق("trace.out")
لو يخطئ! لا شيء {
ذعر(يخطئ)
}
تأجيل F. يغلق()

يخطئ = تتبع. بداية (و)
لو يخطئ! لا شيء {
ذعر(يخطئ)
}
تأجيل يتعقب. قف()

// الكود المراد وصفه
}

يقوم البرنامج بإنشاء ملف تتبع لتخزين بيانات التتبع ، ويبدأ التتبع بامتداد يبدأ الدالة التي تأخذ مثيل الملف وتعيد نوع الخطأ ، وتؤجل التتبع بامتداد قف وظيفة.

يوفر Go أيضًا أدوات لتنسيق التعليمات البرمجية المصدر. إلى جانب أدوات التوصيف ، يمكنك استخدام أدوات التنسيق للحفاظ على معايير التعليمات البرمجية. ال gofmt الأداة عبارة عن أداة تنسيق مضمنة يمكنك استخدامها لتنسيق كود مصدر Go الخاص بك استنادًا إلى القواعد المحددة لحزمك.