کتابخانه‌ی 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