জাভাস্ক্রিপ্টে মাইক্রোসেকেন্ডের সময়


101

মাইক্রোসেকেন্ড রেজোলিউশনের সাথে জাভাস্ক্রিপ্টে কোনও টাইমিং ফাংশন রয়েছে?

আমি ক্রোমের জন্য টাইমআরজেএস সম্পর্কে সচেতন এবং আমি আশা করছি যে ফায়ারফক্স, সাফারি, অপেরা, এপিফ্যানি, কনকোয়ার ইত্যাদির মতো অন্যান্য বন্ধুত্বপূর্ণ ব্রাউজারগুলির জন্য কোনও সমাধান হবে I'm আমি কোনও আইই সমর্থন করতে আগ্রহী নই, তবে আইই সহ উত্তরগুলি স্বাগতম.

(জেএসে মিলিসেকেন্ড সময় নির্ধারণের যথাযথ নির্ভুলতার পরিপ্রেক্ষিতে আমি এই বিষয়ে আমার নিঃশ্বাস ফেলছি না!)

আপডেট: টাইমআরজেস মাইক্রোসেকেন্ড রেজোলিউশনের বিজ্ঞাপন দেয় তবে এটি মিলিসেকেন্ডের পাঠকে 1000 দ্বারা গুণিত করে। পরীক্ষা এবং কোড পরিদর্শন দ্বারা যাচাই করা হয়েছে। হতাশ. : [


4
আপনি এমন একটি ব্রাউজারে কী করতে চেষ্টা করছেন যা মাইক্রোসেকেন্ড যথার্থতার প্রয়োজন? সাধারণভাবে ব্রাউজারগুলির আচরণের পারফরম্যান্স গ্যারান্টি কেবল সুনির্দিষ্ট নয়।
ইউলি

4
ঘটতে যাচ্ছে না. মাইক্রো দ্বিতীয় নির্ভুলতার অস্তিত্ব থাকলেও আপনি একেবারেই বিশ্বাস করতে পারবেন না। একমাত্র সলিড ইউজ কেস যা আমি কল্পনা করতে পারি তা হ'ল ক্রোমের দেশীয় ক্লায়েন্ট তবে তারপরে আপনি জেএস এপিআই সম্পর্কে চিন্তা করবেন না। এছাড়াও "এপিফ্যানি" কে প্রথম শ্রেণীর ব্রাউজার হিসাবে চিকিত্সা করা এবং আইআই উপেক্ষা করে।
রায়নোস

6
জাভাস্ক্রিপ্টে 'সময়' পেতে কিছুটা সময় লাগে, যেমনটি ফিরে আসে- এবং যদি আপনি এমন কোনও ওয়েবপৃষ্ঠায় থাকেন যা ইভেন্টগুলি পুনরায় আঁকছে বা পরিচালনা করছে the আমি নিকটতম 10 মিলিসেকেন্ড নির্ভুলতাও গণনা করব না।
কেনেবেকে

4
পছন্দ করুন, বলুন, সুপার-হাই স্পিডে পপআপগুলি ছোঁড়াচ্ছেন? মূলত, সমস্যাটি হ'ল কেবল কোনও ব্যক্তি কোনও ওয়েবসাইট ভিজিট করেন তা বোঝার দ্বারা বাহ্যিক দলগুলিকে ব্যবহারকারী মেশিনগুলিতে অত্যধিক অ্যাক্সেস দেওয়া একটি গুরুতর সমস্যা।
পয়েন্টটি

4
সেট-ইন্টেরওয়াল (পপআপ, 0) এর চেয়ে এটি আর কোনও "দুর্বল" নয়, এটি যথেষ্ট দ্রুত যে সমস্যাটি মূলত সমতুল্য। মিলিসেকেন্ড নির্ভুলতাও কি অপসারণ করা উচিত? কেনেবেক: আপনার মন্তব্যটি অর্থবোধ করে, আপনাকে ধন্যবাদ।
mwcz

উত্তর:


135

মার্ক রেজোনের উত্তরে ইঙ্গিত হিসাবে, আধুনিক ব্রাউজারগুলিতে এমন একটি এপিআই পাওয়া যায় যা সাব-মিলিসেকেন্ড রেজোলিউশন সময়সীমার ডেটা স্ক্রিপ্টে প্রকাশ করে: ডাব্লু 3 সি হাই রেজোলিউশন টাইমার , ওরফে window.performance.now()

now()Date.getTime()দুটি গুরুত্বপূর্ণ উপায়ে traditionalতিহ্যগত তুলনায় ভাল :

  1. now()সাবমিলিসেকেন্ড রেজোলিউশনের সাথে একটি ডাবল যা পৃষ্ঠার নেভিগেশন শুরুর পর থেকে মিলিসেকেন্ডগুলির সংখ্যা উপস্থাপন করে। এটি ভগ্নাংশে মাইক্রোসেকেন্ডগুলির সংখ্যা প্রদান করে (যেমন 1000.123 এর মান 1 সেকেন্ড এবং 123 মাইক্রোসেকেন্ড) onds

  2. now()একঘেয়েমি বৃদ্ধি পাচ্ছে। সম্ভবত এটি পরবর্তী কলগুলিতে সামনের দিকে বা এমনকি পিছিয়ে Date.getTime()যেতে পারে হিসাবে এটি গুরুত্বপূর্ণ । উল্লেখযোগ্যভাবে, যদি ওএসের সিস্টেমের সময় আপডেট হয় (যেমন পারমাণবিক ক্লক সিঙ্ক্রোনাইজেশন), Date.getTime()আপডেট করা হয়। now()সর্বদা মনোটোনিকভাবে বৃদ্ধির গ্যারান্টিযুক্ত, সুতরাং এটি ওএসের সিস্টেম সময় দ্বারা প্রভাবিত হয় না - এটি সর্বদা প্রাচীর-ঘড়ির সময় হবে (ধরে নেওয়া আপনার প্রাচীরের ঘড়িটি পারমাণবিক নয় ...)।

now()ব্যবহার করা যেতে পারে প্রায় প্রতি স্থান, যা new Date.getTime(), + new Dateএবং Date.now()হয়। ব্যতিক্রমটি হ'ল Dateএবং now()সময়গুলি মেশে না, যেমন ইউনিক্স-এপোচ (1970 সাল থেকে মিলি সেকেন্ডের সংখ্যা) এর Dateউপর ভিত্তি করে , যখন আপনার পৃষ্ঠা নেভিগেশন শুরু হওয়ার পর থেকে মিলি সেকেন্ডের সংখ্যা (সুতরাং এটি এর চেয়ে অনেক কম হবে )।now()Date

now()Chrome স্থিতিশীল, ফায়ারফক্স 15+ এবং আই 10 তে সমর্থিত। এছাড়াও বেশ কয়েকটি পলিফিল পাওয়া যায়।


4
পলিফিলগুলি সম্ভবত ডেট.নো () ব্যবহার করবে, সুতরাং আইই 9 বিবেচনা করে এখনও এটি সেরা বিকল্প এবং এটি কয়েক মিলিয়ন ব্যবহারকারী, তৃতীয় পক্ষের লাইব্রেরি কেন তখন মিশ্রণ করে
ভিটিলিয় তেরজিভ

4
আমার দেওয়াল ঘড়ি হয় পারমাণবিক।
প্রোগ্রামার

4
new Date.getTime()একটি জিনিস না। new Date().getTime()হয়
কোডস্মিথ

আমি সত্যিই এই প্রতিক্রিয়া পছন্দ। আমি কয়েকটি পরীক্ষা চালিয়েছি এবং একটি উদাহরণ নিয়ে এসেছি যাতে আপনি আপনার কনসোলটিতে ফেলে রাখতে পারেন যে এটি ব্যবহার করার সময় এটির এখনও নাটকীয় সংঘর্ষ হবে। (দ্রষ্টব্য, আমি console.logপ্রতিটি রান হিসাবে একটি ব্যয়বহুল কিছু করার পরেও একটি ভাল মেশিনে 10% সংঘর্ষ পাচ্ছিলাম ) আউট করা শক্ত নয় তবে সমস্ত হাইলাইট কোডটি এখানে অনুলিপি করুন:last=-11; same=0; runs=100; for(let i=0;i<runs;i++) { let now = performance.now(); console.log('.'); if (now === last) { same++; } last = now; } console.log(same, 'were the same');
ব্লেডম্যানম্যান

4
আমার বছরের মন্তব্য মন্তব্য ঘুরে দেখা । পারফরম্যান্স.নো () এখন মেল্টডাউন / স্পেক্টর ওয়ার্কআরাউন্ডসের মাধ্যমে আবার কিছুটা ধোঁয়াটে। কিছু ব্রাউজার সুরক্ষার কারণে performance আমি মনে করি আমার কৌশলটি সম্ভবত বৈধ বেঞ্চমার্কিং ব্যবহারের ক্ষেত্রে প্রচুর পরিমাণে টাইমার-ফজ সীমাবদ্ধতার অধীনে আবার কিছুটা প্রাসঙ্গিকতা ফিরে পেয়েছে। এটি বলেছিল, কিছু ব্রাউজারে এখন কিছু বিকাশকারী পারফরম্যান্স-প্রোফাইলিং বৈশিষ্ট্য / এক্সটেনশন রয়েছে যা 2012 সালে বিদ্যমান ছিল না
মার্ক রেজন

20

জাভাস্ক্রিপ্টে এখন মাইক্রোসেকেন্ডগুলি পরিমাপ করার একটি নতুন পদ্ধতি রয়েছে: http://gent.ilcore.com/2012/06/better-timer-for- javascript.html

তবে অতীতে, আমি একটি মিলিসেকেন্ড টাইমার থেকে জাভাস্ক্রিপ্টে 0.1 মিলিসেকেন্ড নির্ভুলতা পাওয়ার একটি অপরিশোধিত পদ্ধতিটি পেয়েছি। অসম্ভব? নাহ। পড়া চালিয়ে যান:

আমি কিছু উচ্চ-প্রিসিও পরীক্ষা নিরীক্ষা করছি যার স্ব-পরীক্ষিত টাইমার যথাযথতা প্রয়োজন এবং আমি খুঁজে পেয়েছি যে আমি নির্দিষ্ট সিস্টেমে নির্দিষ্ট ব্রাউজারগুলির সাথে 0.1 মিলিসেকেন্ড যথার্থতা পেতে পারি reli

আমি খুঁজে পেয়েছি যে আধুনিক জিপিইউ-গতিযুক্ত ওয়েব ব্রাউজারগুলিতে দ্রুত সিস্টেমে (যেমন i7 কোয়াড কোর, যেখানে বেশ কয়েকটি কোর নিষ্ক্রিয় থাকে, কেবল ব্রাউজার উইন্ডো) - আমি এখন টাইমারগুলিকে মিলিসেকেন্ড-নির্ভুল বলে বিশ্বাস করতে পারি। প্রকৃতপক্ষে, এটি একটি অলস আই 7 সিস্টেমে এত নির্ভুল হয়ে উঠেছে, আমি এক হাজারেরও বেশি প্রয়াসের বেশি, নির্ভরযোগ্যভাবে সঠিক মিলিসেকেন্ডটি অর্জন করতে সক্ষম হয়েছি। কেবলমাত্র যখন আমি কোনও অতিরিক্ত ওয়েব পৃষ্ঠা বা অন্য লোড করার মতো জিনিসগুলি করার চেষ্টা করি তখনই মিলিসেকেন্ডের নির্ভুলতা হ্রাস পায় (এবং আমি সফলভাবে আমার নিজের অবক্ষয়িত যথার্থতাটি আগে-পরে-পরে পরীক্ষা করে সফলভাবে ধরতে পেরেছি কিনা তা দেখতে আমার প্রসেসিংয়ের সময়টি হঠাৎ করে 1 বা আরও বেশি মিলি সেকেন্ডে বাড়ানো হয়েছে - এটি আমাকে ফলাফলগুলি অকার্যকর করতে সহায়তা করে যা সম্ভবত সিপিইউ ওঠানামা দ্বারা খুব বেশি বিরূপ প্রভাবিত হয়েছিল)।

এটি i7 কোয়াড-কোর সিস্টেমগুলিতে কিছু জিপিইউ ত্বরণযুক্ত ব্রাউজারগুলিতে এতটা নির্ভুল হয়ে উঠেছে (যখন ব্রাউজার উইন্ডোটি একমাত্র উইন্ডো), আমি খুঁজে পেয়েছি যে আমি জাভাস্ক্রিপ্টে একটি 0.1 মিমি নির্ভুল টাইমার অ্যাক্সেস করতে পারতাম, যেহেতু নির্ভুলতা অবশেষে এখন উচ্চ ধরণের যথাযথ অ্যাপ্লিকেশনগুলির নির্দিষ্ট ধরণের অ্যাপ্লিকেশনের জন্য যেমন টাইমার যথার্থকে উপযুক্ত করে তুলতে কিছু উচ্চ-শেষ ব্রাউজিং সিস্টেম রয়েছে এবং যেখানে অ্যাপ্লিকেশনগুলি নির্ভুলতার বিচ্যুতিগুলির জন্য স্ব-যাচাই করতে সক্ষম হয়।

স্পষ্টতই যদি আপনি বেশ কয়েকটি পাস করে থাকেন তবে আপনি একাধিক পাস (উদাহরণস্বরূপ 10 পাস) চালাতে পারবেন তবে 0.1 মিলিসেকেন্ড যথাযথতা পেতে 10 দ্বারা ভাগ করুন। এটি আরও ভাল নির্ভুলতা পাওয়ার একটি সাধারণ পদ্ধতি - একাধিক পাস করুন এবং মোট সময়কে পাসের সংখ্যা দিয়ে ভাগ করুন।

তবুও ... যদি আমি অস্বাভাবিক পরিস্থিতির কারণে কেবলমাত্র একটি নির্দিষ্ট পরীক্ষার একক বেঞ্চমার্ক পাস করতে পারি তবে আমি জানতে পেরেছি যে এটি করার মাধ্যমে আমি 0.1 (এবং কখনও কখনও 0.01 মিমি) নির্ভুলতা পেতে পারি:

সূচনা / ক্রমাঙ্কন:

  1. পরবর্তী মিলি সেকেন্ডে টাইমার বর্ধিত হওয়া অবধি অপেক্ষা করতে ব্যস্ত লুপটি চালান (পরবর্তী মিলিসেকেন্ড বিরতিতে টাইমার প্রান্তিককরণ করুন) এই ব্যস্ত লুপটি মিলিসেকেন্ডের চেয়ে কম স্থায়ী হয়।
  2. টাইমারের ইনক্রিমেন্টের জন্য অপেক্ষা করার সময় একটি কাউন্টার বাড়ানোর জন্য আরও একটি ব্যস্ত লুপ চালান। কাউন্টার আপনাকে জানায় যে এক মিলিসেকেন্ডে কতগুলি পাল্টা বৃদ্ধি ঘটে। এই ব্যস্ত লুপটি এক পুরো মিলিসেকেন্ডে স্থায়ী হয়।
  3. উপরেরটি পুনরাবৃত্তি করুন, যতক্ষণ না সংখ্যাগুলি স্থিতিশীল না হয়ে যায় (লোডিং টাইম, জেআইটি সংকলক ইত্যাদি) 4. দ্রষ্টব্য: সংখ্যার স্থায়িত্ব আপনাকে একটি অলস সিস্টেমে আপনার প্রাপ্য নির্ভুলতা দেয়। আপনি নির্ভুলতা স্ব-পরীক্ষা করতে হবে, আপনি বৈকল্পিক গণনা করতে পারেন। কিছু ব্রাউজারে রূপগুলি আরও বড় এবং অন্যান্য ব্রাউজারগুলিতে আরও ছোট। দ্রুত সিস্টেমে আরও বড় এবং ধীর সিস্টেমে ধীর। ধারাবাহিকতাও পরিবর্তিত হয়। আপনি বলতে পারেন কোন ব্রাউজারগুলি অন্যের চেয়ে বেশি সামঞ্জস্য / নির্ভুল। আস্তে আস্তে সিস্টেম এবং ব্যস্ত সিস্টেমগুলি ইনিশিয়েশন পাসের মধ্যে আরও বড় বৈচিত্রের দিকে নিয়ে যাবে। ব্রাউজার যদি 0.1 মিমি বা 0.01 মিমি পরিমাপের অনুমতি দেওয়ার জন্য পর্যাপ্ত নির্ভুলতা না দেয় তবে এটি আপনাকে একটি সতর্কতা বার্তা প্রদর্শন করার সুযোগ দিতে পারে। টাইমার স্ক্যু সমস্যা হতে পারে তবে কিছু সিস্টেমে কিছু সংখ্যক মিলিসেকেন্ড টাইমার সঠিকভাবে বৃদ্ধি পায় (ডটের ঠিক ডান দিকে), যার ফলে আপনি নির্ভর করতে পারেন এমন খুব সামঞ্জস্যের ক্রমাঙ্কন মানগুলির ফলাফল হবে।
  4. চূড়ান্ত পাল্টা মান সংরক্ষণ করুন (বা শেষ কয়েকটি ক্যালিগ্রেশন পাসের গড়)

সাব-মিলিসেকেন্ড যথাযথতার জন্য একটি পাস বেঞ্চমার্কিং:

  1. পরবর্তী মিলি সেকেন্ডে টাইমার বর্ধিত হওয়া অবধি অপেক্ষা করার জন্য একটি ব্যস্ত লুপ চালান (পরবর্তী মিলিসেকেন্ড বিরতিতে টাইমার প্রান্তিককরণ করুন)। এই ব্যস্ত লুপটি মিলিসেকেন্ডের চেয়ে কম স্থায়ী হয়।
  2. আপনি যে কাজটি ঠিক সময়ে বেঞ্চমার্ক করতে চান তা সম্পাদন করুন।
  3. টাইমার চেক করুন। এটি আপনাকে পূর্ণসংখ্যার মিলিসেকেন্ড দেয়।
  4. সময় বাড়ানোর জন্য অপেক্ষা করার সময় একটি কাউন্টার বাড়ানোর জন্য একটি চূড়ান্ত ব্যস্ত লুপ চালান। এই ব্যস্ত লুপটি মিলিসেকেন্ডের চেয়ে কম স্থায়ী হয়।
  5. এই কাউন্টার মানটি আরম্ভের থেকে আসল কাউন্টার মান অনুসারে ভাগ করুন।
  6. এখন আপনি মিলিসেকেন্ডের দশমিক অংশ পেয়েছেন !!!!!!!!

সতর্কতা: ব্যস্ত লুপগুলি ওয়েব ব্রাউজারগুলিতে প্রস্তাবিত হয় না, তবে ভাগ্যক্রমে, এই ব্যস্ত লুপগুলি প্রতিটি 1 মিলিসেকেন্ডেরও কমের জন্য চালিত হয় এবং কেবল খুব কম সময় চালানো হয়।

ভেরিয়েবলগুলি যেমন জেআইটি সংকলন এবং সিপিইউ ওঠানামা বিশাল ভুলত্রুটি যুক্ত করে, তবে আপনি যদি বেশ কয়েকটি সূচনা পাস করেন তবে আপনার সম্পূর্ণ গতিশীল পুনঃসংশোধন হবে এবং শেষ পর্যন্ত কাউন্টারটি খুব সঠিক কিছুতে স্থির হয়ে যায়। নিশ্চিত হয়ে নিন যে সমস্ত ব্যস্ত লুপগুলি সমস্ত ক্ষেত্রে হুবহু একই রকম, যাতে ব্যস্ত লুপগুলিতে পার্থক্য না ঘটে। আপনি ফলাফলগুলি বিশ্বাস করা শুরু করার আগে কোডের সমস্ত লাইনগুলি বেশ কয়েকবার কার্যকর করা হয়েছে তা নিশ্চিত করুন, জেআইটি সংকলকগণ ইতিমধ্যে একটি সম্পূর্ণ গতিশীল পুনঃসংশোধন (ডায়নারেক) এ স্থিতিশীল হতে দিয়েছেন।

প্রকৃতপক্ষে, আমি নির্দিষ্ট সিস্টেমে মাইক্রোসেকেন্ডগুলিতে কাছে যাওয়ার নির্ভুলতা প্রত্যক্ষ করেছি , তবে আমি এটি এখনও বিশ্বাস করব না। নিষ্ক্রিয় কোয়াড-কোর সিস্টেমে 0.1 মিলিসেকেন্ড যথার্থতা বেশ নির্ভরযোগ্যতার সাথে কাজ করে বলে মনে হচ্ছে যেখানে আমি একমাত্র ব্রাউজার পৃষ্ঠা। আমি একটি বৈজ্ঞানিক পরীক্ষার ক্ষেত্রে এসেছি যেখানে আমি কেবল এক-অফ পাস (অনন্য ভেরিয়েবল সংঘটিত হওয়ার কারণে) করতে পারি এবং একাধিক পুনরাবৃত্ত পাসের গড়ের পরিবর্তে প্রতিটি পাসকে ঠিক সময় দেওয়ার দরকার ছিল, তাই আমি এই কাজটি করেছিলাম।

আমি 0.1 প্রস্থের নির্ভুলতা (বেশ কয়েক সেকেন্ডের জন্য দৃ stayed় থাকাকালীন) যাচাই করতে, বেশ কয়েকটি প্রাক-পাস এবং ডামি পাসগুলি (ডিনারেক নিষ্পত্তি করার জন্য) করেছি, তারপরে আমার হাতগুলি কীবোর্ড / মাউস থেকে দূরে রেখেছি, যখন বেঞ্চমার্কটি ঘটেছে, তারপরে বেশ কয়েকটি করেছি 0.1 মেসেজ নির্ভুলতার নির্ভরযোগ্যতা যাচাই করতে পোস্ট-পাস (আবার শক্ত থাকুন)। এটিও যাচাই করে যে পাওয়ার স্টেটের পরিবর্তন বা অন্যান্য স্টাফের মতো জিনিসগুলি ফলাফলের সাথে হস্তক্ষেপ করার আগে-পরে-পরে ঘটেছিল না। প্রতিটি একক বেঞ্চমার্ক পাসের মধ্যে প্রাক-পরীক্ষা এবং পোস্ট-পরীক্ষা পুনরাবৃত্তি করুন। এটির পরে, আমি বেশ কার্যত নিশ্চিত ছিলাম যেগুলির মধ্যে ফলাফলগুলি সঠিক ছিল। অবশ্যই এখানে কোনও গ্যারান্টি নেই তবে এটি ওয়েব ব্রাউজারে কিছু ক্ষেত্রে সঠিক <0.1 মিমি নির্ভুলতা পাওয়া সম্ভব দেখায় ।

এই পদ্ধতিটি কেবল খুব, খুব কুলুঙ্গি ক্ষেত্রে কার্যকর। তবুও, এটি আক্ষরিকভাবে 100% অসীম গ্যারান্টিযুক্ত হবে না, আপনি অভ্যন্তরীণ এবং বাহ্যিক যাচাইয়ের কয়েকটি স্তরগুলির সাথে একত্রিত হয়ে গেলে আপনি খুব বিশ্বাসযোগ্য নির্ভুলতা এবং এমনকি বৈজ্ঞানিক নির্ভুলতা অর্জন করতে পারেন।


4
উচ্চতর নির্ভুলতার সাথে সময় নির্ধারণে এটি জটিল হত কারণ আমাদের যা ছিল তা ছিল Date.now()বা ছিল +new Date()। তবে এখন আমাদের আছে performance.now()। এটি স্পষ্ট হওয়ার পরে আপনি আরও ক্ষমতা হ্যাক করার কিছু দুর্দান্ত উপায় খুঁজে পেয়েছেন, এই উত্তরটি মূলত অপ্রচলিত। এছাড়াও, ব্যস্ত লুপ সম্পর্কিত কোনও কিছুর সুপারিশ করবেন না। শুধু এটা করবেন না। আমাদের এর বেশি দরকার নেই।
স্টিভেন লু

4
বেশিরভাগ ব্রাউজারগুলি ক্যাশের সময়কালীন আক্রমণটিকে অস্থায়ীভাবে প্রশমিত করার জন্য তাদের কার্য সম্পাদনের যথাযথতা কমিয়ে দেয় now সুরক্ষা গবেষণায় এই উত্তরটির এখনও তাত্পর্য রয়েছে কি না তা অবাক করি।
কিউ ফ্যান

4
আমার নিজস্ব মন্তব্য পুনর্বিবেচনা। বাহ, আমি উপরের পোস্ট 2012 সালে পারফরম্যান্সের অনেক আগে। ()। কিন্তু এখন কিন্ডা আবার মেল্টডাউন / স্পেকটার ওয়ার্কআউন্ডস দ্বারা কিছুটা অদ্ভুত। কিছু ব্রাউজার সুরক্ষার কারণে performance আমি মনে করি উপরোক্ত কৌশলটি সম্ভবত বৈধ বেঞ্চমার্কিং ব্যবহারের ক্ষেত্রে প্রচুর পরিমাণে টাইমার-ফজ সীমাবদ্ধতার অধীনে আবার কিছুটা প্রাসঙ্গিকতা ফিরে পেয়েছে।
মার্ক রেজন

3

উত্তরটি হ'ল "না", সাধারণভাবে। আপনি যদি কিছু সার্ভার-সাইড পরিবেশে জাভাস্ক্রিপ্ট ব্যবহার করছেন (এটি ব্রাউজারে নয়) তবে সমস্ত বেট বন্ধ রয়েছে এবং আপনি যা কিছু করার চেষ্টা করতে পারেন।

সম্পাদনা করুন - এই উত্তরটি পুরানো; মানগুলি অগ্রগতি করেছে এবং সঠিক সময়ের সমস্যার সমাধান হিসাবে আরও নতুন সুবিধা উপলব্ধ। তবুও, এটি মনে রাখা উচিত যে সত্যিকারের রিয়েল-টাইম অপারেটিং সিস্টেমের ডোমেনের বাইরে, সাধারণ অ-সুবিধাযুক্ত কোডের গণনা সংস্থানগুলিতে এর অ্যাক্সেসের সীমিত নিয়ন্ত্রণ রয়েছে। পারফরম্যান্স পরিমাপ করা পারফরম্যান্সের পূর্বাভাসের মতো নয় (প্রয়োজনীয়ভাবে) ।


2

এখানে নড.জেএস এর জন্য আমার উচ্চ-রেজোলিউশন টাইমার দেখানোর একটি উদাহরণ রয়েছে :

 function startTimer() {
   const time = process.hrtime();
   return time;
 }

 function endTimer(time) {
   function roundTo(decimalPlaces, numberToRound) {
     return +(Math.round(numberToRound + `e+${decimalPlaces}`)  + `e-${decimalPlaces}`);
   }
   const diff = process.hrtime(time);
   const NS_PER_SEC = 1e9;
   const result = (diff[0] * NS_PER_SEC + diff[1]); // Result in Nanoseconds
   const elapsed = result * 0.0000010;
   return roundTo(6, elapsed); // Result in milliseconds
 }

ব্যবহার:

 const start = startTimer();

 console.log('test');

 console.log(`Time since start: ${endTimer(start)} ms`);

সাধারণত, আপনি ব্যবহার করতে সক্ষম হতে পারে:

 console.time('Time since start');

 console.log('test');

 console.timeEnd('Time since start');

আপনি যদি কোডটির সময়সীমার অংশগুলি লুপিংয়ের সাথে জড়িত console.timeEnd()থাকেন তবে আপনার টাইমার ফলাফলগুলি একসাথে যুক্ত করতে আপনি মানটির অ্যাক্সেস অর্জন করতে পারবেন না । আপনি পারেন তবে এটি কদর্য হয়ে যায় কারণ আপনাকে আপনার পুনরাবৃত্ত পরিবর্তনশীলের মান যেমন ইনজেক্ট iকরতে হবে এবং লুপটি সম্পন্ন হয়েছে কিনা তা সনাক্ত করার জন্য একটি শর্ত সেট করতে হবে।

এটি উদাহরণস্বরূপ কারণ এটি কার্যকর হতে পারে:

 const num = 10;

 console.time(`Time til ${num}`);

 for (let i = 0; i < num; i++) {
   console.log('test');
   if ((i+1) === num) { console.timeEnd(`Time til ${num}`); }
   console.log('...additional steps');
 }

উদ্ধৃতি: https://nodejs.org/api/process.html#process_process_hrtime_time

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.