অন্যরা ইতিমধ্যে উল্লেখ করেছেন যে, সি স্ট্যান্ডার্ড লাইব্রেরিতে সময় () ফাংশনের একটি রেজুলেশন এক সেকেন্ডের চেয়ে ভাল হয় না। একমাত্র পুরোপুরি পোর্টেবল সি ফাংশন যা আরও ভাল রেজোলিউশন সরবরাহ করতে পারে তা হ'ল ঘড়ির () বলে মনে হয়, তবে এটি প্রাচীরের ঘড়ির সময়ের চেয়ে প্রসেসরের সময় পরিমাপ করে। যদি কেউ নিজেকে পসিক্স প্ল্যাটফর্মগুলিতে (যেমন লিনাক্স) সীমাবদ্ধ রাখার বিষয়বস্তু হয় তবে ক্লক_জেটটাইম () ফাংশনটি একটি ভাল পছন্দ।
সি ++ ১১ যেহেতু, সময় নির্ধারণের আরও অনেক সুবিধা রয়েছে রয়েছে যা একটি ফর্মে আরও ভাল রেজোলিউশন সরবরাহ করে যা বিভিন্ন সংকলক এবং অপারেটিং সিস্টেমের জুড়ে খুব বহনযোগ্য হওয়া উচিত। একইভাবে, বুস্ট :: ডেটটাইম লাইব্রেরি ভাল উচ্চ-রেজোলিউশন সময় ক্লাস সরবরাহ করে যা অত্যন্ত পোর্টেবল হতে হবে।
এর মধ্যে যে কোনও সুবিধা ব্যবহারের ক্ষেত্রে একটি চ্যালেঞ্জ হ'ল সিস্টেম ক্লকটি জিজ্ঞাসা করে সময় দেরি করা। ক্লক_জেটটাইম (), বুস্ট :: ডেটটাইম এবং স্টাড :: ক্রোনোর সাথে পরীক্ষা করা থেকে এই বিলম্বটি সহজেই মাইক্রোসেকেন্ডগুলির বিষয় হতে পারে। সুতরাং, আপনার কোডের যে কোনও অংশের সময়কাল পরিমাপ করার সময়, আপনাকে এই আকারের চারপাশে কোনও পরিমাপের ত্রুটি থাকতে দেওয়া উচিত বা কোনওভাবে শূন্য-ত্রুটির জন্য সংশোধন করার চেষ্টা করতে হবে। আদর্শভাবে, আপনি ভালভাবে আপনার ফাংশন দ্বারা নেওয়া সময়ের একাধিক পরিমাপ সংগ্রহ করতে এবং গড়, বা বহু রান জুড়ে নেওয়া সর্বনিম্ন / সর্বনিম্ন / সময় গণনা করতে চাইতে পারেন।
সাহায্য করার জন্য এই সব বহনযোগ্যতা ও পরিসংখ্যান-জমায়েত বিষয়, আমি cxx-rtimers উপর গ্রন্থাগার প্রাপ্তিসাধ্য উন্নয়নশীল করে থাকেন গিটহাব যা সি ++ কোড সময়সীমাকে ব্লক জন্য একটি সহজ এপিআই প্রদান, শূন্য ত্রুটি কম্পিউটিং চেষ্টা করে, এবং প্রতিবেদন একাধিক টাইমার থেকে পরিসংখ্যান এমবেডেড আপনার কোডে আপনার যদি সি ++ 11 সংকলক থাকে তবে আপনি কেবল #include <rtimers/cxx11.hpp>
, এবং এমন কিছু ব্যবহার করেন:
void expensiveFunction() {
static rtimers::cxx11::DefaultTimer timer("expensiveFunc");
auto scopedStartStop = timer.scopedStart();
// Do something costly...
}
প্রোগ্রামের প্রস্থান থেকে, আপনি স্টাড :: সেররে লিখিত টাইমিং পরিসংখ্যানের সংক্ষিপ্তসার পাবেন যেমন:
Timer(expensiveFunc): <t> = 6.65289us, std = 3.91685us, 3.842us <= t <= 63.257us (n=731)
যা গড় সময় দেখায়, এর মান-বিচ্যুতি, উপরের এবং নিম্ন সীমা এবং এই ফাংশনটির জন্য কতবার ডাকা হয়েছিল shows
আপনি যদি লিনাক্স-নির্দিষ্ট টাইমিং ফাংশন ব্যবহার করতে চান #include <rtimers/posix.hpp>
তবে আপনি বা বুস্ট লাইব্রেরিগুলি থাকলেও একটি পুরানো সি ++ সংকলক করতে পারেন #include <rtimers/boost.hpp>
। এই টাইমার ক্লাসগুলির সংস্করণগুলিও রয়েছে যা একাধিক থ্রেড থেকে পরিসংখ্যান সংক্রান্ত সময়কালের তথ্য সংগ্রহ করতে পারে। এমন কয়েকটি পদ্ধতি রয়েছে যা আপনাকে সিস্টেম ঘড়ির সাথে সাথে দুটি ক্রমাগত প্রশ্নের সাথে জিরো-ত্রুটি সম্পর্কিত অনুমান করতে দেয়।
time()
আলাদা মান দেয়।