کتابخانهی chrono
در C++، ابزاری استاندارد و انعطافپذیر برای کار با زمان و اندازهگیری
فواصل زمانی با دقتهای مختلف است. این کتابخانه شامل سه مؤلفهی اصلی
میباشد: ساعتها (Clocks)، نقاط زمانی (Time Points) و بازههای زمانی
(Durations) .
ساعتها نقطهی شروع (یا مبدأ) و سرعت تیکهای خود را تعریف میکنند. برای
مثال، یک ساعت ممکن است مبدأ خود را اول ژانویهی ۱۹۷۰ در نظر گرفته و هر
ثانیه یک تیک بزند . برای اندازهگیری زمان اجرای یک قطعه کد، میتوان از std::chrono::steady_clock یا std::chrono::high_resolution_clock و محاسبهی اختلاف دو نقطهی زمانی استفاده کرد .
الگوریتمهای جستجو در C++17
C++17 با افزودن جستجوگرهای تخصصی، امکانات جدیدی را برای جستجوی الگو در محدودههای داده فراهم کرده است. تابع std::search در هدر <algorithm> برای جستجوی اولین رخداد یک دنبالهی فرعی در یک محدوده استفاده میشود . در C++17، نسخهی جدیدی از این تابع اضافه شده که یک شیء جستجوگر (Searcher) دریافت میکند .
جستجوگرهای پیشرفته
کتابخانهی استاندارد C++17 سه نوع جستجوگر اصلی را ارائه میدهد که هر کدام برای سناریوی خاصی بهینهسازی شدهاند . std::default_searcher یک پیادهسازی استاندارد از الگوریتم جستجو است. دو جستجوگر دیگر، یعنی std::boyer_moore_searcher و std::boyer_moore_horspool_searcher،
الگوریتمهای کارآمد جستجوی رشته را پیادهسازی میکنند که برای الگوهای
بلند و مجموعهدادههای بزرگ بهمراتب سریعتر از روش جستجوی خطی عمل
میکنند .
این جستجوگرها، برخلاف جستجوی خطی که پیچیدگی زمانی از مرتبهی حاصلضرب
طول محدوده و طول الگو دارد، با پیشپردازش الگو و ایجاد جدولهای پرش،
جستجو را بهینه میسازند.
یکپارچگی Chrono و الگوریتمهای جستجو
یکی از کاربردهای مهم کتابخانهی chrono در کنار الگوریتمهای STL، اندازهگیری و مقایسهی کارایی آنهاست. بهعنوان مثال، میتوان از std::chrono::steady_clock برای ثبت زمان شروع و پایان اجرای الگوریتمهای جستجوی مختلف مانند std::search
با جستجوگرهای مختلف استفاده کرد و سپس با محاسبهی اختلاف آنها، عملکرد
هر روش را مقایسه نمود. این رویکرد به برنامهنویسان امکان میدهد تا
بهترین الگوریتم را بر اساس ماهیت دادهها و نیازمندیهای سرعت برنامه خود
انتخاب کنند. استفاده از std::chrono::duration برای نمایش نتایج بهصورت میلیثانیه یا میکروثانیه، یک روش استاندارد برای کمیسازی عملکرد است .
کلیدواژه ها : std::chrono-مدیریت زمان در C++-اندازهگیری زمان اجرا-std::search-C++17 searchers-Boyer-Moore در C++-std::boyer_moore_searcher-std::boyer_moore_horspool_searcher-الگوریتم جستجوی پیشرفته-بهبود عملکرد جستجو-chrono و الگوریتم-مقایسه الگوریتمهای جستجو-std::steady_clock-اندازهگیری کارایی کد-آموزش chrono-آموزش std::search