ملف تعريف البرنامج النصي

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

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

تسجيل جلسات التعريف

قبل التسجيل، تحتاج إلى اختيار بيئة التسجيل من:

  • العميل (افتراضي) — يسجل البرامج النصية على جانب العميل، بما في ذلك LocalScripts و Scripts مع RunContext تم تعيينه إلى Client.
  • الخادم — يسجل البرامج النصية على جانب الخادم، بما في ذلك Scripts مع RunContext تم تعيينه إلى Server أو Legacy. يقوم ملف تعريف البرنامج النصي بمسح جميع البيانات المجمعة على جانب الخادم في نهاية كل جلسة.

يمكنك أيضًا تعيين خيارات التسجيل التالية:

السلوكالخياراتافتراضيالوصف
التردد1000 مرة في الثانية (1 كيلوهرتز)
10,000 مرة في الثانية (10 كيلوهرتز)
1 كيلوهرتزتردد 10 كيلوهرتز لديه دقة أعلى، حيث قد لا يلتقط ملف تعريف البرنامج النصي استدعاءات API التي يتم تنفيذها بشكل متكرر أكثر من التردد المحدد، ولكنه أيضًا له تكلفة أداء أعلى.
مدة الجلسة1 دقيقة
5 دقائق
10 دقائق
يدوي
يدويالخيار اليدوي يتطلب منك إيقاف التسجيل يدويًا.
سلوك الاستطلاع المباشرتشغيل
إيقاف
إيقافهذا السلوك يقوم بالاستطلاع وتحديث بيانات التعريف كل ثانية خلال جلسة التعريف.

لتسجيل جلسة تعريف جديدة:

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

    قائمة منسدلة لجميع أدوات وحدة التحكم للمطورين مع خيار ScriptProfiler مميز للاختيار.
  2. قم بتوسيع قائمة العميل-الخادم المنسدلة لاختيار العميل أو الخادم.

    قائمة منسدلة مع خيارات العميل والخادم للاختيار.
  3. اختياري
    تحقق من مربع الحية لتمكين سلوك الاستطلاع المباشر.

  4. اختياري
    اختر التردد و الوقت لاختيار تردد التسجيل ومدة الجلسة إذا كنت لا ترغب في استخدام القيم الافتراضية.

  5. انقر على بدء لبدء جلسة التعريف. إذا قمت بتعيين مدة، سيعرض ملف تعريف البرنامج النصي مؤقت العد التنازلي مع الوقت المتبقي في الجلسة.

  6. انقر على إيقاف أو انتظر حتى تنتهي عملية التسجيل لعرض بيانات التعريف.

قراءة بيانات التعريف

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

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

يمكنك أيضًا اختيار من خيارات العرض التالية لتخصيص احتياجات تصحيح الأخطاء الخاصة بك:

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

تصدير بيانات التعريف

يسمح لك ملف تعريف البرنامج النصي بتصدير بيانات التعريف المسجلة كملف JSON. لتصدير البيانات المسجلة بعد جلسة تعريف:

  1. في نافذة ملف تعريف البرنامج النصي، انقر على تصدير.

  2. في نافذة التصدير، اختر جلسة التعريف التي تريد تصديرها. أعد تسمية اسم الملف الافتراضي إذا كنت ترغب في تعيين اسم مخصص.

  3. انقر على تصدير لحفظ ملف JSON.

    نافذة تصدير مثال.

يتضمن ملف JSON المصدر الحقول التالية:

  • الإصدار: رقم الإصدار.
  • SessionStartTime: طابع زمني بالميلي ثانية يسجل وقت بدء الجلسة.
  • SessionEndTime: طابع زمني بالميلي ثانية يسجل وقت انتهاء الجلسة.
  • الفئات: مصفوفة من فئات مهام الإطار المسجلة في جلسة التعريف. يتضمن كل إدخال:
    • الاسم: اسم كل فئة مهمة إطار.
    • NodeId: المعرف الفريد لفئة مهمة (عقدة). إنه فهرس يبدأ من 1 في مصفوفة Nodes. على سبيل المثال، يمكنك البحث عن العقدة ذات NodeId يساوي 123 من خلال استرداد العنصر الثالث والـ 123 في Nodes.
  • العقد: مصفوفة من العقد المسجلة في جلسة التعريف. يتضمن كل إدخال:
    • TotalDuration: مقدار الوقت الذي تكلفه العقدة في وقت وحدة المعالجة المركزية بالميكروثانية.
    • FunctionIds: مصفوفة من المعرفات الفريدة للدوال.
    • NodeIds: مصفوفة من معرفات العقد.
  • الدوال: مصفوفة من الدوال المسجلة في جلسة التعريف.
    • TotalDuration: مقدار الوقت الذي تكلفه الدالة في وقت وحدة المعالجة المركزية بالميكروثانية.
    • الاسم: اسم الدالة، إذا كان متاحًا.
    • المصدر: مصدر الدالة، إذا كان متاحًا.
    • السطر: رقم السطر للدالة، إذا كان متاحًا.
    • العلامات: حقل بت يشير إلى أي بيئة تنفيذ دالة محددة. يمكن أن تحتوي حاليًا على القيم التالية:
      • 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}
]
}
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.