যদি আপনার স্থানীয় বিকাশ মেশিনে ফাংশন এক্সিকিউশন সময় পাওয়ার প্রয়োজন হয় তবে আপনি হয় আপনার ব্রাউজারের প্রোফাইলিং সরঞ্জামগুলি, বা কনসোল কমান্ড যেমন console.time()
এবং এর জন্য ব্যবহার করতে পারেন console.timeEnd()
।
সমস্ত আধুনিক ব্রাউজারে অন্তর্নির্মিত জাভাস্ক্রিপ্ট প্রোফাইল রয়েছে। এই প্রোফাইলগুলির সর্বাধিক নির্ভুল পরিমাপ দেওয়া উচিত কারণ আপনার বিদ্যমান কোডটি পরিবর্তন করতে হবে না, যা ফাংশনের মৃত্যুর সময়কে প্রভাবিত করতে পারে।
আপনার জাভাস্ক্রিপ্ট প্রোফাইল করতে:
- ইন ক্রোম , প্রেস F12 চেপে নির্বাচন প্রোফাইল TAB, এরপরে সংগ্রহ জাভাস্ক্রিপ্ট CPU- র প্রোফাইল ।
- ইন ফায়ারফক্স ইনস্টল / ওপেন ফায়ারবাগকে, এবং এর উপর ক্লিক প্রোফাইল বোতাম।
- ইন ইন্টারনেট 9+ , প্রেস F12 চেপে এ ক্লিক করুন স্ক্রিপ্ট বা প্রোফাইলার (আইই সংস্করণটি উপর নির্ভর করে)।
বিকল্পভাবে, আপনার বিকাশ মেশিনে , আপনি console.time()
এবং সাথে আপনার কোডে উপকরণ যুক্ত করতে পারেন console.timeEnd()
। ফায়ারফক্স ১১ +, ক্রোম 2 + এবং আইআই ১১ + এ সমর্থিত এই ফাংশনগুলি টাইমারগুলির প্রতিবেদন করে যা আপনি শুরু / থামিয়ে দিয়েছিলেন console.time()
। time()
ব্যবহারকারীর দ্বারা সংজ্ঞায়িত টাইমার নামটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং timeEnd()
তারপরে টাইমার শুরুর পর থেকে সম্পাদনের সময় রিপোর্ট করে:
function a() {
console.time("mytimer");
... do stuff ...
var dur = console.timeEnd("myTimer"); // NOTE: dur only works in FF
}
মনে রাখবেন যে কেবল ফায়ারফক্স timeEnd()
কলটিতে অতিবাহিত সময়টি ফেরত দেয় । অন্যান্য ব্রাউজারগুলি কেবল ফলাফলটিকে বিকাশকারী কনসোলে রিপোর্ট করে: এর ফিরতি মানটি timeEnd()
সংজ্ঞায়িত।
আপনি যদি বুনোতে ফাংশন এক্সিকিউশন সময় পেতে চান তবে আপনাকে আপনার কোডটি ইনস্ট্রুমেন্ট করতে হবে। আপনার কাছে কয়েকটি বিকল্প রয়েছে। আপনি অনুসন্ধানের মাধ্যমে সহজভাবে শুরু এবং শেষ সময়গুলি সংরক্ষণ করতে পারেন new Date().getTime()
:
function a() {
var start = new Date().getTime();
... do stuff ...
var end = new Date().getTime();
var dur = end - start;
}
তবে, Date
অবজেক্টটিতে কেবল মিলিসেকেন্ড রেজোলিউশন রয়েছে এবং কোনও ওএসের সিস্টেমের ক্লক পরিবর্তন দ্বারা প্রভাবিত হবে। আধুনিক ব্রাউজারগুলিতে আরও ভাল বিকল্প রয়েছে।
ভালো বিকল্প ব্যবহার করা উচ্চ ঔজ্জ্বল্যতাময় সময় , ওরফে window.performance.now()
। দুটি গুরুত্বপূর্ণ উপায়ে now()
traditionalতিহ্যগত তুলনায় ভাল Date.getTime()
:
now()
সাবমিলিসেকেন্ড রেজোলিউশনের সাথে একটি ডাবল যা পৃষ্ঠার নেভিগেশন শুরুর পর থেকে মিলিসেকেন্ডগুলির সংখ্যা উপস্থাপন করে। এটি ভগ্নাংশে মাইক্রোসেকেন্ডগুলির সংখ্যা প্রদান করে (যেমন 1000.123 এর মান 1 সেকেন্ড এবং 123 মাইক্রোসেকেন্ড)।
now()
একঘেয়েমি বৃদ্ধি পাচ্ছে। সম্ভবত এটি পরবর্তী কলগুলিতে সামনের দিকে বা এমনকি পিছিয়ে Date.getTime()
যেতে পারে হিসাবে এটি গুরুত্বপূর্ণ । উল্লেখযোগ্যভাবে, যদি ওএসের সিস্টেমের সময় আপডেট হয় (যেমন পারমাণবিক ক্লক সিঙ্ক্রোনাইজেশন), Date.getTime()
আপডেট করা হয়। now()
সর্বদা মনোটোনিকভাবে বৃদ্ধি পাওয়ার গ্যারান্টিযুক্ত, সুতরাং এটি ওএসের সিস্টেম সময় দ্বারা প্রভাবিত হয় না - এটি সর্বদা প্রাচীর-ঘড়ির সময় হবে (ধরে নেওয়া আপনার প্রাচীরের ঘড়িটি পারমাণবিক নয় ...)।
now()
প্রায় প্রতিটি স্থান, যা ব্যবহার করা যেতে পারে new Date().getTime()
, + new Date
andt Date.now()
হয়। ব্যতিক্রমটি হ'ল Date
এবং now()
সময়গুলি মেশে না, যেমন ইউনিক্স-এপোচ (1970 সাল থেকে মিলি সেকেন্ডের সংখ্যা) এর Date
উপর ভিত্তি করে , যখন আপনার পৃষ্ঠা নেভিগেশন শুরু হয়েছে তখন থেকে মিলি সেকেন্ডের সংখ্যা (সুতরাং এটি এর চেয়ে অনেক কম হবে )।now()
Date
এখানে কীভাবে ব্যবহার করবেন তার একটি উদাহরণ now()
:
function a() {
var start = window.performance.now();
... do stuff ...
var end = window.performance.now();
var dur = end - start;
}
now()
Chrome স্থিতিশীল, ফায়ারফক্স 15+ এবং আই 10 তে সমর্থিত। এছাড়াও বেশ কয়েকটি পলিফিল পাওয়া যায়।
বুনোয় নির্বাহের সময় পরিমাপের জন্য অন্য একটি বিকল্প হ'ল ইউজারটাইমিং । ইউজারটাইমিং একইরকম আচরণ করে console.time()
এবং console.timeEnd()
তবে এটি একই উচ্চ রেজোলিউশন টাইমস্ট্যাম্পটি now()
ব্যবহার করে যা ব্যবহার করে (যাতে আপনি একটি সাব-মিলিসেকেন্ড একঘেয়েভাবে বাড়ানো ঘড়ি পাবেন), এবং পারফরম্যান্স টাইমলাইনে টাইমস্ট্যাম্প এবং সময়সীমাগুলি সংরক্ষণ করে ।
ইউজারটাইমিংয়ে চিহ্নগুলির (টাইমস্ট্যাম্প) ধারণা এবং ব্যবস্থাগুলি (সময়কাল) রয়েছে) আপনি যতগুলি চান তার সংজ্ঞা দিতে পারেন এবং সেগুলি পারফরম্যান্স টাইমলাইনে প্রকাশিত হয়েছে ।
একটি টাইমস্ট্যাম্প সংরক্ষণ করতে, আপনি কল করুন mark(startMarkName)
। আপনার প্রথম চিহ্ন থেকে সময়কাল পেতে, আপনি কেবল কল করেন measure(measurename, startMarkname)
। সময়কালটি আপনার চিহ্নগুলির পাশাপাশি পারফরম্যান্স টাইমলাইনে সংরক্ষণ করা হয়।
function a() {
window.performance.mark("start");
... do stuff ...
window.performance.measure("myfunctionduration", "start");
}
// duration is window.performance.getEntriesByName("myfunctionduration", "measure")[0];
ইউজারটাইমিং IE10 + এবং Chrome25 + এ উপলব্ধ। একটি পলিফিলও পাওয়া যায় (যা আমি লিখেছিলাম)।