قياس المدد
قِس مدة تشغيل الشيفرة
قياس المدد درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.
قياس زمن تنفيذ الشيفرة
قد ترغبون أحيانًا في معرفة المدة التي استغرقتها مهمة ما، مثل تحميل ملف أو تشغيل حلقة أو بناء مستوى. يساعدكم قياس المدد على العثور على الأجزاء البطيئة وتحسينها.
توفر Lua أداتين لذلك: os.time للقياس التقريبي وos.clock للقياس الدقيق.
نمط ساعة الإيقاف
الفكرة الأساسية بسيطة: سجّلوا الوقت قبل تنفيذ العمل، ثم نفّذوا العمل، وسجّلوا الوقت بعده، ثم اطرحوا القيمتين.
الفرق بينهما هو المدة المنقضية. وهذا النمط القائم على البدء والإيقاف هو أساس كل مؤقت.
local start = os.time()
-- work happens here
local stop = os.time()
print("Elapsed:", stop - start)دقة os.time منخفضة
يحسب os.time الثواني الكاملة، لذلك لا يستطيع رصد أي شيء أسرع من ثانية واحدة. وغالبًا ما تُظهر استدعاءتان سريعتان متتاليتان فرقًا يساوي صفرًا.
تحتاجون إلى ساعة أدق للمهام القصيرة، وهنا يأتي دور os.clock.
local a = os.time()
local b = os.time()
print(b - a)التعرّف على os.clock
تعيد os.clock() عددًا من الثواني، لكنه يكون عددًا عشريًا يتضمن كسورًا. وهي تقيس وقت المعالج الذي يستخدمه برنامجكم بدقة عالية.
وهذا يجعلها مثالية لقياس العمليات السريعة بدقة تصل إلى أجزاء من الثانية.
print(os.clock())قياس زمن حلقة
ضعوا حلقة بين قراءتين لـ os.clock لمعرفة المدة التي استغرقتها. والفرق بين القراءتين هو الوقت المنقضي بالثواني.
تستغرق الحلقات الأكبر وقتًا أطول، لذا فهذه طريقة سريعة لمقارنة الأساليب المختلفة.
local t1 = os.clock()
local sum = 0
for i = 1, 1000000 do sum = sum + i end
local t2 = os.clock()
print("Took", t2 - t1, "seconds")تنسيق النتيجة
يصعب قراءة العدد العشري الطويل، لذا استخدموا string.format لعرض عدد من المنازل بطريقة مرتبة.
تطبع %.3f هنا ثلاثة أرقام بعد الفاصلة، مما يوفر تفاصيل بدقة تصل إلى مستوى المللي ثانية.
local t1 = os.clock()
for i = 1, 500000 do end
local elapsed = os.clock() - t1
print(string.format("%.3f seconds", elapsed))os.time أم os.clock
اختاروا الأداة المناسبة. استخدموا os.time للمدد الواقعية، مثل معرفة «عدد الثواني منذ تسجيل دخول المستخدم».
استخدموا os.clock لقياس أداء الشيفرة، لأنها دقيقة وتتتبّع وقت المعالج بدلًا من الوقت الفعلي للساعة.
دالة مؤقت قابلة لإعادة الاستخدام
يمكنكم وضع هذا النمط داخل دالة. فهي تشغّل دالة مُعطاة، وتقيس زمنها، ثم تطبع النتيجة.
وبذلك تحتفظون بمنطق قياس الزمن في مكان واحد يسهل إعادة استخدامه.
local function timeIt(fn)
local s = os.clock()
fn()
print(string.format("%.4f s", os.clock() - s))
end
timeIt(function() for i=1,100000 do end end)حساب الفارق بالساعات
بالنسبة إلى الفواصل الزمنية الواقعية الطويلة، يكون استخدام os.difftime مع قيمتين من os.time أوضح. فهي تعيد المدة بالثواني.
اقسموا على 60 للحصول على الدقائق، أو على 3600 للحصول على الساعات، لعرضها بطريقة مناسبة.
local started = os.time({year=2025, month=1, day=1, hour=9})
local ended = os.time({year=2025, month=1, day=1, hour=17})
local hours = os.difftime(ended, started) / 3600
print(hours, "hours")عرض الدقائق والثواني
لعرض مدة بالدقائق والثواني، استخدموا القسمة الصحيحة ومعامل باقي القسمة.
يعطي // عدد الدقائق الكاملة، بينما يعطي % الثواني المتبقية.
local total = 145
local mins = total // 60
local secs = total % 60
print(string.format("%d:%02d", mins, secs))حساب تنازلي بسيط
اجمعوا الأفكار للإبلاغ عن الوقت المتبقي. اطرحوا الوقت الحالي من الوقت المستهدف، ثم نسّقوا الثواني على هيئة دقائق وثوانٍ.
ينتج عن ذلك عرض واضح للعدّ التنازلي.
local target = os.time() + 90
local left = os.difftime(target, os.time())
print(string.format("%d:%02d left", left // 60, left % 60))اختبار سريع
اختاروا الأداة الأفضل للقياس الدقيق للزمن.
مراجعة
لقياس مدة ما، اقرأوا الساعة قبل التنفيذ وبعده، ثم اطرحوا القيمتين. استخدموا os.time للمدد الواقعية بالثواني الكاملة، وos.clock لقياس زمن الشيفرة بدقة وبأجزاء من الثانية.
نسّقوا النتائج باستخدام string.format، وحوّلوا الثواني الخام إلى دقائق وثوانٍ باستخدام // و%. تتيح لكم هذه الأدوات قياس زمن أي شيء، من حلقة إلى يوم عمل كامل.
الأسئلة الشائعة
هل درس «قياس المدد» مجاني؟
نعم — نص درس «قياس المدد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.
ماذا ستتعلم في «قياس المدد»؟
قِس مدة تشغيل الشيفرة تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟
لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «قياس المدد»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟
نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.