یک برنامه 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) کامپایل کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای اندازهگیری دقیقتر از 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) و از معیارهای آماری مثل انحراف معیار برای گزارش نتایج استفاده کنید.
گزارش