یک برنامه C++ بنویسید که زمان اجرای یک تابع نمونه (برای مثال مرتب‌سازی یک آرایه n عضوی با اعداد تصادفی) را با استفاده از اندازه‌گیری کند و نتیجه‌ی زمان اجرا (به میلی‌ثانیه) به همراه یک timestamp خوانا را در یک فایل خروجی ثبت کند.

14.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 02:16

0.0

برای حل این مسئله از کتابخانهٔ std::chrono (مثلاً steady_clock یا high_resolution_clock) برای گرفتن زمان قبل و بعد از اجرای تابع و از duration_cast برای تبدیل به میلی‌ثانیه استفاده کنید؛ برای ذخیره نتیجه در فایل از std::ofstream با حالت append (ios::app) بهره ببرید تا هر بار یک سطر شامل timestamp و مدت اجرا افزوده شود. نکات مفید: برای نتایج قابل‌اطمینان چند بار اجرا کنید و میانگین بگیرید، قبل از اندازه‌گیری اجرای گرم (warm-up) انجام دهید، از reserve برای بردارها استفاده کنید و در حالت مرتبط با HPC برنامه را با بهینه‌سازی (مثلاً -O2) کامپایل کنید.

توسط پژوهشگر در 198 روز قبل ساعت 02:16
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 198 روز قبل ساعت 02:17

برای اندازه‌گیری دقیق‌تر از std::chrono::steady_clock استفاده کنید تا به‌خاطر تغییرات زمان سیستمی دچار خطا نشوید و هنگام تولید timestamp قابل‌خواندن از std::chrono::system_clock + std::put_time برای فرمت ISO 8601 بهره ببرید. قبل از اندازه‌گیری یک اجرای گرم (warm‑up) انجام داده و تابع را چند بار اجرا کنید و میانگین را محاسبه کنید تا نویز حذف شود؛ همچنین برای بردارها از reserve استفاده کنید تا تخصیص حافظه در زمان اندازه‌گیری دخالت نکند. هنگام ثبت نتیجه در فایل با std::ofstream در حالت ios::app دقت کنید که نوشتن I/O را از زمان‌بندی عملکرد برنامه جدا کنید یا آن را پس از اندازه‌گیری انجام دهید و بعد از نوشتن flush یا close کنید تا سطرها از دست نروند. برنامه را با بهینه‌سازی مناسب کامپایل کنید (مثلاً -O2) و از معیارهای آماری مثل انحراف معیار برای گزارش نتایج استفاده کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری