PDA

View Full Version : مدت زمان اجراي برنامه(پيچيدگي زماني الگوريتم)



C#Student
سه شنبه 24 آذر 1388, 15:28 عصر
با سلام
در زبان ‍C++ ميخوام مدت زمان اجراي برنامه رو اندازه بگيرم . البته نه مدت زماني كه پنجره Run باز است و ما داده ها رو وارد ميكنيم بلكه مدت زماني كه مثلا دو تا حلقه for تودرتو اجرا ميشوند چه قدر است ؟؟ يا به عبارتي ميزان كارايي زماني الگوريتم براي 10000و 100 عدد را ميخوام مقايسه كنم .
(مثلا: زمان اجراي يه الگوريتم بابل سرت براي 100 عدد و زمان همان الگوريتم براي 10000 عدد )

mehdi5106
چهارشنبه 25 آذر 1388, 07:48 صبح
از توابع time استفاده کن و یک زمان جهت شروع تابع می گیری و یک زمان جهت پایان تابع. اختلاف این دو میشود مدت زمان اجرا.(البته چون سرعت CPU زیاد هست باید تابع را مثلا 100 بار فراخوانی کنی و سپس زمان رو بر 100 تقسیم کنی).
نمونه مثال هم در این سایت و هم در خود Turbo C هست.

behnam_dr
چهارشنبه 25 آذر 1388, 09:34 صبح
با سلام
در زبان ‍C++‎ ميخوام مدت زمان اجراي برنامه رو اندازه بگيرم . البته نه مدت زماني كه پنجره Run باز است و ما داده ها رو وارد ميكنيم بلكه مدت زماني كه مثلا دو تا حلقه for تودرتو اجرا ميشوند چه قدر است ؟؟ يا به عبارتي ميزان كارايي زماني الگوريتم براي 10000و 100 عدد را ميخوام مقايسه كنم .
(مثلا: زمان اجراي يه الگوريتم بابل سرت براي 100 عدد و زمان همان الگوريتم براي 10000 عدد )

دوست عزیز ، شما در سوال مطرح کردید میزان کارآیی زمان الگوریتم
خوب شما به طبع باید دو الگوریتم رو پس از بهینه سازی مورد محاسبه قرار دهید.

ميزان يا پيچيدگي زمان يك برنامه مقدار زماني است كه كامپيوتر براي اجراي كامل برنامه نياز دارد . اين زمان شامل مجموع زمان كامپايل و زمان اجراي برنامه است البته از آنجا كه برنامه بعد از كامپايل اول ديگر نيازي به كامپايل مجدد ندارد و مي توانيم چندين بار بدون كامپايل آنرا اجرا كنيم، زمان مهم براي ما زمان اجراي برنامه است . با این تعریف فکر میکنم زمان الگوریتم در زبانهای مختلف با هم تفاوت آنچنانی نداشته باشه .چون در نهایت کامپایل یک برنامه ، برنامه به کد میانی تبدیل میشه.
پیشنهاد میکنم فصل اول و دوم کتاب طراحی الگوریتم دکتر نقیب زاده یا نئوپولیتان رو مطالعه بفرمائید. به شما در انجام اینگونه محاسبات کمک میکنه. با احترام-بهنام

mortezamsp
پنج شنبه 26 آذر 1388, 11:04 صبح
مثلا اینطوری میشه :
#include <iostream.h>
#include <conio.h>
#include <time.h>
void main (void)
{
time_t t1,t2;
float t,n;
float t5=0;
cout<< "Enter number of Loops: ";
cin >> n;
for (int j=0; j<5; j++)
{
t1 = time(NULL);

double sum=0;
for (int i=0; i<n ;i++)
{
for (int num=0; num<1000000 ; num++)
sum += num;
cout << i << "\t" << (time(NULL)-t1)<< "\r";
}

t2 = time(NULL);

t = (t2 - t1) / n;
cout << "Process Time: " << t << endl ;
t5 += t;
}
cout << endl << "Final Process Time: " << (t5/5);
getch();
}

sase1414
جمعه 07 خرداد 1389, 19:38 عصر
سلام.میخواستم بپرسم کتاب یا سایتی سراغ دادارید که نمونه سوال با جواب از پیچیدگی زمانی الگوریتم داشته باشه؟
ممنون

ali682344
جمعه 07 خرداد 1389, 20:23 عصر
سلام من هم تقریبا چنین مشکلی دارم من سوالو در قسمت طراحی الگوریتم مطرح کردم ولی متاسفانه هنوز کسی به ما کمک نکرده

gjmkdyttyhujk
پنج شنبه 08 اردیبهشت 1390, 21:05 عصر
سلام می خواستم ببینم آیا حل المسائل کتاب ساختمان داده ها در ++C الیس هورویتس ترجمه ی ابراهیم زاده ی قلزم لینک دانلودشو دارید؟ ممنون!اگه ندارید میشه برام پیداش کنید.