javascript - سكريبت - شرح جافا سكربت بالعربي pdf



كيف يمكنني قياس شفرة جافا سكريبت؟ (6)

هل هناك حزمة تساعدني في تحديد رمز JavaScript؟ أنا لا أشير إلى Firebug ومثل هذه الأدوات.

أحتاج إلى مقارنة وظيفتين مختلفتين لجافا سكريبت قمت بتطبيقها. أنا على دراية جيدة بنموذج بيرل مارك ( Benchmark.pm ) وأنا أبحث عن شيء مماثل في جافا سكريبت.

هل تم التركيز على قياس شفرة جافا سكريبت في البحر؟ هل يمكنني الابتعاد عن التوقيت لمرة واحدة فقط من الوظائف؟

https://src-bin.com


Answer #1

إذا كنت بحاجة إلى شيء بسيط يمكنك فعله على النحو التالي:

'use strict'
console.clear()

const powerOf = x => y => Math.pow(x, y)
const powerOfThree = powerOf(3)

function performanceCalc(fn, ...params) {
    const start = +new Date()
    const result = fn(...params)
    const end = +new Date()

    console.log(`Result: ${result}. Execution Time: ${end - start} ms`)
}

performanceCalc(powerOfThree, 2)

هنا مثال على الكود


Answer #2

في حالة كتابة نص برمجي مرجعي مخصص ، تأكد من ملاحظة أن بعض المتصفحات تطبق معالجات dom فقط بعد انتهاء الوظيفة التي تم تعريفها بها. مزيد من التفاصيل هنا http://www.quirksmode.org/blog/archives/2009/08/when_to_read_ou.html


Answer #3

ما عليك سوى إضافة مؤقت سريع إلى المزيج ، والذي قد يجده شخص مفيد:

var timer = function(name) {
    var start = new Date();
    return {
        stop: function() {
            var end  = new Date();
            var time = end.getTime() - start.getTime();
            console.log('Timer:', name, 'finished in', time, 'ms');
        }
    }
};

من الناحية المثالية ، سيتم وضعه في الفصل الدراسي ، وعدم استخدامه كعامل عالمي مثلما فعلت في الأغراض المذكورة أعلاه. سيكون استخدامه بسيطا جدا:

var t = timer('Some label');
// code to benchmark
t.stop(); // prints the time elapsed to the js console

Answer #4

مجرد طريقة بسيطة.

console.time('test');
console.timeEnd('test');

Answer #5

jsPerf هو موقع go-to لاختبار أداء JS. ابدأ هناك. إذا كنت بحاجة إلى إطار لتشغيل اختباراتك الخاصة من سطر الأوامر أو استخدام البرامج النصية Benchmark.js ، فإن المكتبة التي تم إنشاء jsperf.com عليها.

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

تعديل: تعمل المراجع التي تمت إزالتها على JSLitmus على أنها لم تعد ذات صلة أو مفيدة.


Answer #6

مجرد الوقت عدة تكرارات من كل وظيفة. قد لا يكون التكرار واحدًا كافيًا ، ولكن (اعتمادًا على مدى تعقيد وظائفك) في مكان أقرب إلى 100 أو حتى 1000 تكرار يجب أن يقوم بالمهمة.

يحتوي Firebug أيضًا على برنامج profiler إذا كنت ترغب في معرفة أي أجزاء من الدالة الخاصة بك تقوم بإبطائه.

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





benchmarking