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