سؤال

أنا اختبار سرعة بعض برامج جافا سكريبت عن طريق إنشاء كائن التاريخ ، واستخدامها للحصول على الوقت بالمللي ثانية قبل وبعد العمل الحقيقي وظيفة.أنا جعلت الجسم بسيط إضافة حلقة ثم النهاية هو طرح قديم ms من جديد ms والطباعة ذلك.بيد أن كل شيء ينتهي في 0 مللي ثانية...الأمر الذي يجعل الشعور الوقت عندما تحقق ذلك مع الكتابة هو نفسه قبل وبعد العمل.أفعل ذلك الحق ، و جافا سكريبت (في كروم) بسرعة البرق, أو هناك وراء الكواليس الاشياء التي تفسد بلدي المتغيرات.

هل كانت مفيدة؟

المحلول

في حين أن تاريخ كائن يعود مرات في ميلي ثانية ، هذا ليس في الواقع القرار الموقت وراء ذلك.كمثال, توقيت ربما علامة أكثر من مرة واحدة كل 10 مللي ثانية.إذا كانت العملية تستغرق سوى 3 ms, ثم أكثر من مرة أنك لن ترى غير قياس (في بعض الأحيان سترى 10 مللي ثانية).

الحل هو تشغيل وظيفة الخاص بك عدة مرات ، وفي الوقت كل شيء.على سبيل المثال, تشغيله مليون مرة و تقسيم الوقت الإجمالي بنسبة 1000000 للحصول على متوسط وقت تشغيل واحد.

نصائح أخرى

وبي <لأ href = "https://stackoverflow.com/questions/1799543/how-can-i-catch-everything-after-the-underscore-in-a-filepath-with-javascript/1799563# 1799563 "> الإجابة على هذا السؤال للحصول على كيف يمكن تنفيذ بعض المقارنات المرجعية بسيطة. كما أشارGreg Hewgill بها، فمن المهم المدى اختبار عدة مرات للحصول على تمثيل دقيق لمتى الاختبارات اختبار محدد في الواقع.

وعادة، فإنه يتلخص في شيء بسيط مثل:

var MAX = 100000, i =  0, 
    s   = null,   e = null;

console.info("`someMethodToTest()` over %d iterations", MAX);
s = new Date();
do {
    someMethodToTest();
} while ( ++i < MAX );
e = new Date();

console.log("Total: %dms; average: %dms", +e - +s, (+e - +s) / MAX);

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

وراجع للشغل، قد تكون مهتمة في استخدام التعريف جافا سكريبت. الحرائق للحصول على فايرفوكس لديه لطيفة واحدة. كل ما تحتاجه لفتح وحدة التحكم وضرب <م> الملف الشخصي .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top