تقنية

زمن يقرأه المساعد: هل performance.now تاريخ الساعة؟

رسم توضيحي: أ: بداية 100؛ أ: نهاية 160؛ نفس الأصل: مدة 60؛ ب: قراءة 20 بأصل آخر
مخطط من إعداد بحر العلوم. الوحدة مللي ثانية؛ ب ليس بداية الفترة أ؛ لا قياس جهاز

performance.now ليس رقما لتاريخ مدني منذ عام 1970. حين يراجع المساعد وصف مدة عملية، يحتاج إلى اسم الساعة وأصلها قبل طرح رقمين. نقرأ MDN ونؤلف بطاقات وقت في المللي ثانية، دون تشغيل ساعة أو قياس سرعة برنامج أو نموذج.

الخلاصة السريعة

تعيد الطريقة زمنا بالمللي ثانية منذ timeOrigin، من ساعة رتيبة لا تخضع لتعديلات ساعة النظام. أما Date.now فيرتبط بعصر Unix وبساعة النظام. [1] لا نطرح قيما من أصلين مختلفين كما لو كانا واحدا.

  • يرتبط performance.now بـ timeOrigin ويقيس مللي ثوان؛ Date.now مرتبط بعصر Unix وقد يتأثر بضبط النظام. [1] اسم الساعة جزء من معنى الرقم.
  • في سياق واحد معلن، قراءتا 100 و 160 تعطيان مدة 60 مللي ثانية. لا نطرح 20 من سياق آخر ونعلن مدة 140 بلا توحيد المرجع.
  • رتابة performance.now تعني أن الساعة لا تنقص ولا تخضع لتعديل ساعة النظام. [1] مثالنا الورقي لا يثبت سرعة تطبيق أو زمن شبكة.
  • توثق MDN اختلافا بين التطبيقات في استمرار العد أثناء نوم النظام. [1] لا نضمن قياس مدة تشمل النوم على كل منصة، ولم نختبر جهازا.

من أين يبدأ كل رقم؟

تعيد performance.now زمنا بالمللي ثانية منذ timeOrigin. وتربط MDN Date.now بعصر Unix وساعة النظام التي قد تتأثر بالتعديلات. [1]

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

نختار في المقال أرقاما نسبية قصيرة كي تظهر فكرة الفرق. لا نحولها إلى تاريخ فتح صفحة فعلية أو إلى توقيت جهاز عرفناه؛ بطاقاتنا مؤلفة بالكامل.

كيف نحسب مدة في سياق واحد؟

نؤلف سياقا أ له أصل زمن واحد ووحدة مللي ثانية. القراءة الأولى 100 والثانية 160، فالفرق 60. ثم نؤلف سياقا ب له أصل مختلف وقراءة 20؛ هذه القراءة ليست البداية الأولى لعملية أ.

طرح 20 من 160 يعطي عددا حسابيا 140، لكنه لا يكون مدة العملية أ تحت دفترنا. المشكلة هنا ليست صحة الطرح، بل أن الرقمين لم يمثلَا طرفي الفترة نفسها على المرجع المعلن.

لا نحدد الفرق بين الأصلين في المثال. إذا أراد تقرير مقارنة بين السياقين، يحتاج مادة توحيد المرجع؛ لا يعوضها تشابه اسم الطريقة.

السياق المؤلفالقراءة بالمللي ثانيةالمقارنة المسموح بها هنا
أ: بداية100مع نهاية أ
أ: نهاية160المدة 60
ب: أصل مختلف20ليست بداية أ

هل تعديل ساعة النظام يفسر تناقصا هنا؟

تصف MDN ساعة performance.now بأنها رتيبة لا تنقص ولا تخضع لتعديل ساعة النظام، بخلاف Date.now المتأثرة بهذه الساعة. [1]

نؤلف بطاقة أخرى لوقت نظام تغير من 1000 إلى 990 بسبب ضبط مفترض. لا نلصق هذا التناقص تلقائيا بقراءتي 100 و 160 من الساعة الرتيبة؛ إنهما وصفان لمرجعين مختلفين في ورقتنا.

هذا مثال على عقد القراءة لا قياسا كشف عطل ساعة. كما لا يثبت فرق 60 زمن كل ما حدث في نظام موزع أو سرعة استجابة مستخدم؛ حددنا فترة داخل سياق واحد فقط.

ما استثناء المدة التي تشمل النوم؟

توضح MDN أن المواصفة تطلب استمرار العد أثناء نوم النظام، لكنها تسجل اختلافا في التطبيق بين الأنظمة والمتصفحات. [1]

لذلك لا يضمن ملخصنا أن كل مدة طويلة تشمل النوم كما يتوقع القارئ على كل منصة. مثال 100 و 160 لم يقدم فترة نوم أو تجميد، ولا يثبت اختبارا على Windows أو غيره.

لم نشغل performance.now أو Date.now. يذكر المساعد الطريقة والوحدة والأصل ونطاق الفترة، ويحفظ قيد النوم عند توسيع السؤال؛ تظل المدة المحسوبة وصفا ورقيا لا تقرير أداء أو حدث تقويمي.

المصادر ومتابعة القراءة

  1. MDN: Performance now (يفتح في نافذة جديدة)developer.mozilla.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.