تحليل الأداء باستخدام jit.p وperf
حلّل أداء شيفرة Lua باستخدام jit.p، وعلّق على المسارات الساخنة، وقلّل عمليات التخصيص
تحليل الأداء باستخدام jit.p وperf درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.
لماذا تحليل الأداء؟
يحدّد تحليل الأداء الدوال التي تستهلك معظم وقت وحدة المعالجة المركزية. ومن دون تحليل الأداء، غالبًا ما تُوجَّه جهود التحسين إلى شيفرة ليست عنق الزجاجة.
jit.p: أداة التحليل المضمّنة في LuaJIT
يتضمن LuaJIT أداة jit.p، وهي أداة تحليل تعتمد على أخذ العينات. يمكن تمكينها من سطر الأوامر أو من داخل البرنامج النصي.
-- Command line:
luajit -jp=s script.lua
-- Or inside script:
require("jit.p").start("s") -- sample at function level
-- ... code ...
require("jit.p").stop()أوضاع jit.p
الأوضاع: "s" لأخذ العينات حسب الدالة، و"l" لأخذ العينات حسب السطر، و"i" لعرض الفرق بين المفسّر وJIT. لإخراج النتائج إلى ملف: "-jp=s,output.txt".
قراءة مخرجات jit.p
تُظهر المخرجات توزيعًا مئويًا للوقت المستغرق. ركّزوا على نقاط الاختناق الرئيسية القليلة في أعلى القائمة.
-- Example output:
-- 40% mymodule.hotLoop
-- 25% table.sort
-- 15% string.format
-- ...jit.dump لتفاصيل التتبّع
يُخرج require("jit.dump").on() تفاصيل IR وتعليمات الآلة لكل تتبّع مُجمّع. استخدموه لفهم ما الذي جمّعه JIT فعليًا.
استخدام Linux perf
في Linux، يلتقط perf record -g luajit script.lua مكدسات الاستدعاءات على مستوى نظام التشغيل. ادمجوه مع perf report لإنشاء مخطط لهبي.
ملفات خرائط LuaJIT وperf
يمكن لـLuaJIT إنشاء ملفات خرائط رموز لـperf، بحيث تعرض تقارير perf أسماء دوال Lua بدلًا من العناوين الخام: luajit -jp=p script.lua.
os.clock للاختبارات المعيارية المصغّرة
لإجراء اختبارات معيارية سريعة، قِسوا الزمن الفعلي باستخدام os.clock(). كرروا العملية مرات كثيرة للتقليل من ضوضاء القياس.
local function bench(fn, iters)
local t0 = os.clock()
for _ = 1, iters do fn() end
return (os.clock() - t0) / iters
endعزل نقاط الاختناق
بعد التحليل، استخرجوا الدالة التي تمثل نقطة الاختناق إلى اختبار معياري مستقل ومصغّر. يسهّل ذلك تجربة التحسينات والتحقق من نتائجها.
تأثير GC في التحليل
تظهر فترات توقف GC على شكل ارتفاعات مفاجئة في نتائج التحليل. أجروا القياس مع تعطيل GC باستخدام collectgarbage("stop") للفصل بين زمن الخوارزمية وزمن GC.
أفضل ممارسات التحليل
- أجروا التحليل باستخدام بيانات واقعية، وليس اختبارات معيارية مصغّرة.
- حلّلوا إصدارات الإنتاج، وليس إصدارات التصحيح.
- قيسوا الأداء قبل كل تغيير وبعده.
- لا تحسّنوا شيفرة تستغرق أقل من <5% من إجمالي الوقت.
سؤال حول التحليل
ماذا يقيس وضع "s" في jit.p؟
مراجعة: التحليل باستخدام jit.p وperf
استخدموا jit.p لتحليل الدوال والأسطر على مستوى Lua، وjit.dump لفحص تتبعات JIT، وperf في Linux لإنشاء المخططات اللهبية على مستوى نظام التشغيل. قيسوا الأداء، وحسّنوه، ثم قيسوه مجددًا.
الأسئلة الشائعة
هل درس «تحليل الأداء باستخدام jit.p وperf» مجاني؟
نعم — نص درس «تحليل الأداء باستخدام jit.p وperf» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.
ماذا ستتعلم في «تحليل الأداء باستخدام jit.p وperf»؟
حلّل أداء شيفرة Lua باستخدام jit.p، وعلّق على المسارات الساخنة، وقلّل عمليات التخصيص تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟
لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تحليل الأداء باستخدام jit.p وperf»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟
نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- نظرة عامة على بنية LuaJIT
- كتابة Lua المتوافقة مع JIT
- تحليل الأداء باستخدام jit.p وperf
- أنماط القياس المعياري