أداة قياس الأداء للنصوص هي أداة ضمن وحدة تحكم المطورين تتيح لك تسجيل جلسات قياس الأداء لجميع النصوص القابلة للتشغيل وعرض تكاليف وقت وحدة المعالجة المركزية الخاصة بها مع إعدادات تسجيل وعرض مخصصة. يمكنها تسجيل جميع أنواع مكالمات الوظائف، بما في ذلك وظائف لواو، مكالمات الطرق، والوصول إلى الخصائص. تعتبر هذه الأداة مفيدة لتحديد النصوص التي تستهلك أكبر قدر من موارد وحدة المعالجة المركزية وتبطئ الأداء.
تسجيل جلسات قياس الأداء
قبل التسجيل، تحتاج إلى تحديد بيئة التسجيل من:
- العميل (افتراضي) — يسجل النصوص من جانب العميل، بما في ذلك LocalScripts و Scripts مع تعيين RunContext إلى Client.
- الخادم — يسجل النصوص من جانب الخادم، بما في ذلك Scripts مع تعيين RunContext إلى Server أو Legacy. تقوم أداة قياس الأداء للنصوص بمسح جميع البيانات المجمعة من جانب الخادم في نهاية كل جلسة.
يمكنك أيضًا تعيين خيارات التسجيل التالية:
| السلوك | الخيارات | الافتراضي | الوصف |
|---|---|---|---|
| التردد | 1000 مرة في الثانية (1 كيلو هرتز) 10,000 مرة في الثانية (10 كيلو هرتز) | 1 كيلو هرتز | تردد 10 كيلو هرتز لديه دقة أعلى، حيث قد لا تلتقط أداة قياس الأداء للنصوص مكالمات API التي تنفذ بشكل أكثر تكرارًا من التردد الذي اخترته، لكنها أيضًا لها تكلفة أداء أعلى. |
| طول الجلسة | 1 دقيقة 5 دقائق 10 دقائق يدوي | يدوي | تتطلب الخيار اليدوي منك إيقاف التسجيل يدويًا. |
| سلوك الاستطلاع المباشر | تشغيل إيقاف | إيقاف | يقوم هذا السلوك بالاستطلاع وتجديد بيانات القياس كل ثانية خلال جلسة القياس. |
لتسجيل جلسة قياس جديدة:
افتح وحدة تحكم المطورين.
قم بتوسيع قائمة الأدوات المنسدلة لاختيار ScriptProfiler.

قم بتوسيع القائمة المنسدلة للعميل والخادم لاختيار العميل أو الخادم.

(اختياري) تحقق من خانة Live لتفعيل سلوك الاستطلاع المباشر.
(اختياري) اختر Freq و Time لاختيار تردد التسجيل وطول فترة الجلسة إذا لم ترغب في استخدام القيم الافتراضية.
انقر على Start لبدء جلسة القياس. إذا قمت بتعيين مدة، ستعرض أداة قياس الأداء للنصوص مؤقت العد التنازلي مع الوقت المتبقي في الجلسة.
انقر على Stop أو انتظر حتى تنتهي عملية التسجيل لعرض بيانات القياس.
قراءة بيانات القياس
بعد توقف الجلسة، تقوم أداة قياس الأداء للنصوص بإنشاء جدول يعرض مقدار الوقت الذي تكلفه كل مكالمة وظيفة من حيث وقت وحدة المعالجة المركزية. يرتب الجدول مكالمات الوظائف من أكثر الوقت المستغرق إلى أقل وقت مستغرق، ويسمح لك بالبحث عن وظائف محددة باسمها. يوفر العرضين التاليين:
- Callgraph (افتراضي): يصنف ويعرض مكالمات الوظائف في هيكل شجري يعتمد على مهام الإطار. يعرض هذا العرض كل فئة مهمة كعقد تحت نفس الجذر ويسمح لك بتوسيعها لعرض الوظائف. يمكنك أيضًا تمرير الماوس فوق أي عقدة في الشجرة لعرض معلومات الملف والسطر. على سبيل المثال، قد تكشف Stepped/CameraInput/<anonymous> عن Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125.

- Functions: يسرد جميع الوظائف دون تصنيفها حسب المهام.

يمكنك أيضًا الاختيار من خيارات العرض التالية لتناسب احتياجات التصحيح الخاصة بك:
| الاسم | الخيارات | الافتراضي | الوصف |
|---|---|---|---|
| الوحدة | ميلي ثانية (مللي ثانية) نسبة مئوية (%) | مللي ثانية | يعرض الوقت المستغرق لكل مكالمة API بالميلي ثانية أو النسب المئوية من إجمالي جلسة التسجيل. |
| المتوسط | إيقاف 1 ثانية 1 دقيقة 5 دقائق 10 دقائق | إيقاف | يحسب الوقت المتوسط المستغرق لكل مكالمة API حسب القيمة المحددة. إذا اخترت خيارًا أطول من طول الجلسة، تقوم أداة قياس الأداء للنصوص باستنتاج طول الجلسة لحساب المتوسط. على سبيل المثال، يمكنك اختيار خيار 5 دقائق لجلسة مدتها 1 دقيقة لرؤية القيمة المتوسطة المتوقعة إذا قمت بتشغيل الشيفرة لمدة 5 دقائق. |
تصدير بيانات القياس
تتيح لك أداة قياس الأداء للنصوص تصدير بيانات القياس المسجلة كملف JSON. لتصدير البيانات المسجلة بعد جلسة قياس:
على نافذة أداة قياس الأداء للنصوص، انقر على Export.
على نافذة التصدير، حدد جلسة القياس التي تريد تصديرها. قم بإعادة تسمية الاسم الافتراضي للملف إذا كنت ترغب في تعيين اسم مخصص.
انقر على Export لحفظ ملف JSON.

يتضمن ملف JSON المصدّر الحقول التالية:
- Version: رقم الإصدار.
- SessionStartTime: طابع زمني بالميلي ثانية يسجل وقت بدء الجلسة.
- SessionEndTime: طابع زمني بالميلي ثانية يسجل وقت انتهاء الجلسة.
- Categories: مصفوفة من فئات مهام الإطار المسجلة في جلسة القياس. كل إدخال يتضمن:
- Name: اسم كل فئة مهمة إطار.
- NodeId: المعرف الفريد لفئة مهمة (عقدة). إنه فهرس يبدأ من 1 في مصفوفة Nodes. على سبيل المثال، يمكنك البحث عن العقدة التي تحمل NodeId يساوي 123 من خلال استرجاع العنصر رقم 123 في Nodes.
- Nodes: مصفوفة من العقد التي تم تسجيلها في جلسة القياس. كل إدخال يتضمن:
- TotalDuration: المقدار من الوقت الذي تكلفه العقدة من حيث وقت وحدة المعالجة المركزية بالميكروثانية.
- FunctionIds: مصفوفة من المعرفات الفريدة للوظائف.
- NodeIds: مصفوفة من معرّفات العقد.
- Functions: مصفوفة من الوظائف المسجلة في جلسة القياس.
- TotalDuration: المقدار من الوقت الذي تكلفه الوظيفة من حيث وقت وحدة المعالجة المركزية بالميكروثانية.
- Name: اسم الوظيفة، إن توفرت.
- Source: مصدر الوظيفة، إن توفرت.
- Line: رقم سطر الوظيفة، إن توفرت.
- Flags: حقل بت يشير إلى أي بيئة تنفيذ وظيفة محددة. يمكن أن تحتوي حاليًا على القيم التالية:
- 0: يمثل البت رقم 0 IsNative للتنفيذ تحت Native CodeGen.
- 1: يمثل البت رقم 1 IsPlugin للتنفيذ كجزء من مكون إضافي.
مثال على بيانات القياس المصدرة
{
"Version":2,
"SessionStartTime":1704850750514,
"SessionEndTime":1704850751198,
"Categories":
[
{"Name":"Parallel Luau","NodeId":4},
{"Name":"Heartbeat","NodeId":1}
],
"Nodes":
[
{"TotalDuration":2530,"FunctionIds":[1],"NodeIds":[2]},
{"TotalDuration":2530,"FunctionIds":[2,5],"NodeIds":[3,7]},
{"TotalDuration":1267},
{"TotalDuration":7746,"FunctionIds":[3],"NodeIds":[5]},
{"TotalDuration":7746,"FunctionIds":[4],"NodeIds":[6]},
{"TotalDuration":7746},
{"TotalDuration":1263,"FunctionIds":[6],"NodeIds":[8]},
{"TotalDuration":1263,"FunctionIds":[7],"NodeIds":[9]},
{"TotalDuration":1263,"FunctionIds":[8],"NodeIds":[10]},
{"TotalDuration":1263}
],
"Functions":
[
{"Name":"main","TotalDuration":2530},
{"Source":"builtin_ManageCollaborators.rbxm.ManageCollaborators.Packages._Index.roblox_rodux-3.0.0.rodux.Store","Line":81,"TotalDuration":1267},
{"Name":"Script","TotalDuration":7746},
{"Source":"Workspace.Actor.Script","Line":1,"TotalDuration":7746},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Line":221,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_update","Line":236,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_getRange","Line":277,"TotalDuration":1263},
{"Source":"[C]","Name":"ScrollingFrame.CanvasPosition","TotalDuration":1263}
]
}