تحليل الأداء باستخدام LuaProfiler
أضف أدوات القياس إلى الشيفرة باستخدام LuaProfiler للعثور على نقاط استهلاك المعالج وعدد الاستدعاءات
تحليل الأداء باستخدام LuaProfiler درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.
ما هو LuaProfiler؟
LuaProfiler هو محلّل أداء قائم على الخطافات لـ Lua. يسجّل عدد استدعاءات الدوال والوقت التراكمي الذي تستغرقه كل دالة، وينشئ تقريرًا لتحليل التحسين.
تثبيت LuaProfiler
يتوفر عبر LuaRocks: luarocks install luaprofiler. أو أدرج المصدر مباشرةً في مشروعك.
بدء محلّل الأداء
أحط تعليماتك البرمجية باستدعاءات بدء المحلّل وإيقافه.
local profiler = require("profiler")
profiler.start("profile.txt") -- output to file
-- ... your code ...
profiler.stop()قراءة التقرير
يعرض التقرير: اسم الدالة، وعدد الاستدعاءات، والوقت لكل استدعاء، والوقت الإجمالي. ركّز على الدوال ذات الوقت الإجمالي المرتفع.
-- Example report:
-- function calls total_time avg_time
-- hotLoop 1000 0.850 s 0.850 ms
-- table.sort 200 0.120 s 0.600 ms
-- string.format 5000 0.090 s 0.018 msتحليل مسارات محددة من التعليمات البرمجية
حلّل مجموعة فرعية فقط من تعليماتك البرمجية لتقليل الحمل والتركيز على محتوى التقرير.
profiler.start()
doExpensiveOperation()
profiler.stop()
profiler.report("expensive_op.txt")بديل: محلّل أداء مخصص باستخدام debug.sethook
أنشئ محلّل أداء بسيطًا باستخدام debug.sethook لجمع أعداد الاستدعاءات من دون مكتبة خارجية.
local counts = {}
debug.sethook(function(event)
if event == "call" then
local info = debug.getinfo(2, "n")
local name = info.name or "?"
counts[name] = (counts[name] or 0) + 1
end
end, "c")
-- ... run code ...
debug.sethook()
for name, count in pairs(counts) do
print(count, name)
endاستخدام os.clock لتوقيت الدوال
قِس زمن الدوال الفردية يدويًا لإجراء اختبارات أداء سريعة ومحددة.
local function time(fn, ...)
local t = os.clock()
fn(...)
return os.clock() - t
end
print("myFunc took:", time(myFunc, arg1, arg2))استخدام jit.p لتحليل أداء LuaJIT
في LuaJIT، يتفوّق jit.p على محلّلات الأداء القائمة على الخطافات عند استخدامه في الإنتاج، إذ يسبب حملًا أقل ويراعي JIT في أخذ العينات.
المخططات اللهبية
أنشئ مخططًا لهبيًا بجمع عينات المكدس. الأدوات: lua-flameprof لـ PUC Lua، وjit.p + FlameGraph لـ LuaJIT. تعرض المخططات اللهبية التسلسل الهرمي الكامل لاستدعاءات استخدام وحدة المعالجة المركزية.
تحليل الأداء في مجموعات الاختبار
شغّل محلّل الأداء داخل اختبارات الوحدة لاكتشاف تراجعات الأداء تلقائيًا. أكّد أن الدوال التي تمثل نقاط الاختناق لا تتجاوز عتبة زمنية معينة.
نقاط الاختناق الشائعة
- ضم السلاسل النصية باستخدام
..داخل الحلقات، فاستخدم table.concat. - استخدام table.sort مع الجداول الكبيرة، وفكّر في خوارزمية أسرع.
- إنشاء closures بشكل متكرر.
- سلاسل __index عميقة في metatable.
سؤال حول تحليل الأداء
ماذا يعرض تقرير LuaProfiler؟
مراجعة: تحليل الأداء باستخدام LuaProfiler
استخدم LuaProfiler أو محلّل أداء مخصصًا باستخدام debug.sethook لجمع أعداد الاستدعاءات وأزمنتها. ركّز على الدوال ذات الوقت الإجمالي المرتفع. في LuaJIT، فضّل jit.p. استخدم المخططات اللهبية لعرض التسلسل الهرمي للاستدعاءات.
الأسئلة الشائعة
هل درس «تحليل الأداء باستخدام LuaProfiler» مجاني؟
نعم — نص درس «تحليل الأداء باستخدام LuaProfiler» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.
ماذا ستتعلم في «تحليل الأداء باستخدام LuaProfiler»؟
أضف أدوات القياس إلى الشيفرة باستخدام LuaProfiler للعثور على نقاط استهلاك المعالج وعدد الاستدعاءات تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟
لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تحليل الأداء باستخدام LuaProfiler»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟
نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مكتبة debug بالتفصيل
- التنقيح عن بُعد باستخدام MobDebug
- تحليل الأداء باستخدام LuaProfiler
- تغطية الشيفرة وقياس الاختبارات