آموزش متلب (MATLAB)
۵۴۳ آموزش
نمایش دسته بندی ها (۵۴۳ آموزش)

به دست آوردن مقدار زمان اجرای محاسبات، با دستورهای tic و toc ، در متلب (MATLAB)

برای به دست آوردن مقدار زمان اجرای برنامه و یا بخشی از برنامه، از دستورهای tic و toc استفاده می شود. همان طور که مشخص است، نام این دو دستور از ((تیک تاک)) ساعت گرفته شده است. این دستورات، یکی از مهمترین دستورات متلب (MATLAB) می باشند. قبل از هر چیز، اهمیت این دستورات را برای شما شرح می دهیم :

معمولا در پروژه های پیچیده، زمان اجرای برنامه، بسیار طولانی می شود. در چنین مواقعی، برنامه نویس ممکن است کنجکاو باشد که یکی از موارد زیر را بداند :

1- کدام بخش برنامه است که بیشترین زمان را به خود اختصاص داده است. با دانستن این موضوع، برنامه نویس سعی می کند که کدهای آن بخش از برنامه را بهینه سازی کند تا در زمان صرفه جویی شود.

2- ممکن است بخواهیم بدانیم که زمان اجرای برنامه چقدر است، اما نمی خواهیم که مجبور باشیم همین طور بنشینیم و ببینیم چه زمانی برنامه پایان می یابد. مثلا شب قبل از خواب، برنامه را اجرا می کنید و صبح که بیدار شوید، می توانید در پنجره Command ، میزان زمان اجرای برنامه را ببینید.

3- در بسیاری از برنامه ها، حلقه های for هستند که زمان زیادی می گیرند. فرض کنید حلقه ای داریم که پارامتر آن از 1 تا 1000 می باشد. با قرار دادن دستور در ابتدا و انتهای حلقه (ابتدا و انتهای درون حلقه) می توانیم زمان یک بار اجرا را محاسبه کنیم و سپس آن را ضرب در 1000 کنیم، چنانچه زمان بیش از حد زیاد باشد، می توانیم همین حالا آن را متوقف کنیم (با گرفتن کلید Ctrl و فشار دادن کلید C از کیبورد)، به جای آن که پس از اجرای نیمی از برنامه، به این نتیجه برسیم.

در هر کجا از کدها که دستور tic نوشته شود، اندازه گیری زمان شروع می شود و در هر کجا که دستور toc نوشته شود، اندازه گیری پایان می یابد و مقدار زمان اندازه گیری شده در خروجی متلب (MATLAB) نمایش داده می شود. یعنی کدهایی که می خواهیم زمان اجرای آنها را به دست آوریم را باید در بین دو دستور tic و toc بنویسیم.

به مثال زیر توجه کنید :

مثال

نتیجه :

دستور A = ones(100,100); ، ماتریسی با 100 ردیف و 100 ستون می سازد که همه مقادیر آن برابر 1 می باشد. همان طور که مشاهده می کنید، ساخت این ماتریس، 0.000064 ثانیه طول کشیده است. زیاد به این عدد کوچک خیره نشوید، زیرا ممکن است روزی آرزویتان این باشد که برنامه ای که دارید، در کمتر از 1 روز اجرا شود، اکنون که این مطالب را برای شما می نویسم درگیر برنامه ای هستم که تخمین زده ام اجرای آن 8 روز طول می کشد و باید به هر نحو ممکن این مقدار را به 1 روز برسانم.

نکته

چنانچه بخواهید زمان اجرای کل برنامه را متوجه شوید، تنها کافی است که دستور tic در اولین خط از برنامه و دستور toc در آخرین خط از برنامه قرار گیرد.

نویسنده علیرضا گلمکانی
شماره کلید 19
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 12 12 0
متلب دوست
۱۳۹۵/۰۶/۲۰
۱۶:۱۷

سلام. خیلی مفید بود. خیلی ممنونم

حمید
۱۳۹۵/۰۶/۲۸
۱۸:۲۲

سلام
من میخوام این مدت زمان در یک آرایه ذخیره بشه چیکار باید کرد ؟

hamed
۱۳۹۵/۱۱/۱۴
۰۲:۳۶

سلام . خیلی خوب .ممنون از سایت عالیتون

یوسف
۱۳۹۵/۱۲/۰۴
۲۱:۲۵

Thank you

شیرالات گروهه
۱۳۹۵/۱۲/۲۱
۱۳:۱۵

خیلی ممنون از مطالب مفیدتون

علیرضا
۱۳۹۶/۰۷/۲۹
۱۴:۲۱

میشه زمانی که برای اجرای برنامه از دستور تیک و تاک بدست میاد رو تو ی متغییر ذخیره کرد؟ یعنی اگر بخواییم متوسط زمانی که از تیک تاک بدست میاد برای چندین بار اجرای برنامه رو داشته باشیم باید چه کار کنیم.(منظور از چندین مثلا یک میلیون بار)

admin
۱۳۹۶/۰۸/۰۷
۱۹:۴۲

سلام.
می توانید به شکل زیر، میزان زمان گذشته را در یک متغیر ذخیره نمایید :


نتیجه اجرای کد متلب (MATLAB) بالا :


بنابراین می توانید یک بردار یا ماتریس با مقادیر اولیه صفر (با استفاده از دستور zeros) بسازید و هر بار، زمان مربوط به اجرای کدها را در یک عنصر از آن قرار دهید. 
البته 1 میلیون بار که گفتید خیلی زیاد است و باید اندازه های کوچکتری در نظر بگیرید یا اطلاعات را به شکل هایی مثل ذخیره در فایل های متنی، نگه دارید تا اجرای برنامه با مشکل روبرو نشود (بر حسب تجربه، محدودیت های متلب (MATLAB) را متوجه خواهید شد).

احمد
۱۳۹۶/۰۸/۰۹
۱۷:۱۹

سلام
 لطفا می خواستم راهنمایی کنید
برای اجرای مشخص کردن مدت زمان حل دستگاه در یک معادله 5000*5000برای اجرای x=inv(A)*b   یا  x=A\b دستور تیک تاک به چه صورت وارد می شود.تشکر

پروین
۱۳۹۷/۰۵/۲۷
۱۷:۵۸

با این روش کد یک دور اجرا میشه بعد زمان ارائه میشه؟
نمیشه قبل اجرایکد بفهمیم چه قد طول میکشه؟

mzflower
۱۳۹۷/۰۸/۲۰
۱۱:۰۷

سلام ممنونم از سایت خوبتون...خدا قوت......میشه  کاری کرد که به دقیقه نشون بده...بشه واحد زمانیش رو تغییر داد؟ 

امیر
۱۳۹۹/۰۳/۲۶
۱۲:۴۶

خود این کد چقدر زمان میبره جواب بده؟

مهدوی
۱۳۹۹/۰۸/۱۸
۱۷:۳۰

سلام
این روش اندازه گیری چقدر دقیق هست؟
چون هر بار که برنامه را ران میکنم مقدار متفاوتی نشان می دهد. مخصوصاْ ران اول
مثلاْ دفعه اول این مقدار 1.85 ثانیه است و دفعات بعد حدود 0.4 ثانیه حتی با Clear کردن تمام متغییر ها‍!!!!
کدام درست است؟

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)