PDA

View Full Version : سوال: زمان اجرا



mg1ddd
جمعه 20 فروردین 1389, 11:05 صبح
با سلام
من برنامه ای در c++ نوشتم و زمان اجرای آن را با کدی که در c++ نوشتم اندازه گیری کردم ولی مشکلی:گریه: که هست این است که هر بار زمان اجرای برنامه برای یک ورودی مشخص متفاوت از دفعه قبل است. خواهشمندم راهنمایی کنید.

mg1ddd
جمعه 20 فروردین 1389, 19:56 عصر
clock_t begin,end;
begin=clock();
برنامه ای که می خوام زمان آن را اندازه گیری کنم
end=clock();
d=((end-begin)*1000)/CLOCKS_PER_SEC;
cout<<d;
به برنامه ای که می خوام زمان آن را اندازه گیری کنم هر بار مثلا ورودی 8 می دهم ولی هر بار زمان اجرا متفاوت از زمان قبلی است

javanerd
جمعه 20 فروردین 1389, 20:44 عصر
clock_t begin,end;
begin=clock();
برنامه ای که می خوام زمان آن را اندازه گیری کنم
end=clock();
d=((end-begin)*1000)/CLOCKS_PER_SEC;
cout<<d;
به برنامه ای که می خوام زمان آن را اندازه گیری کنم هر بار مثلا ورودی 8 می دهم ولی هر بار زمان اجرا متفاوت از زمان قبلی است
این موضوع کاملا طبیعی هست. چون CPU کامپیوتر شما به طور همزمان در حال اجرا کردن تعداد زیادی برنامه‌ (سیستمی و غیر سیستمی) هست. زمانی که شما با این روش اندازه‌گیری می‌کنید زمانی هست که برنامه شروع میشه تا زمانی که تموم میشه. این وسط به کررات سی‌پی‌یو به برنامه‌های دیگه‌ای که روی کامپیوتر شما درحال اجراست داده میشه تا اون‌ها هم اجرا بشوند. این زمان‌ها اجرا هم در زمانی که شما اندازه گیری می‌کنید به حساب میاد. شما باید تعداد سیکل‌های cpu‌ که صرف برنامه‌ی شما میشه رو اندازه گیری کنید و نه تعداد تمام سیکل‌هایی که cpu از زمان شروع برنامه‌ی شما تا زمان پایانش صرف می‌کنه. برای این کار باید از یک پروفایلر استفاده کنید نه از دستور clock().

mg1ddd
شنبه 21 فروردین 1389, 17:47 عصر
این موضوع کاملا طبیعی هست. چون CPU کامپیوتر شما به طور همزمان در حال اجرا کردن تعداد زیادی برنامه‌ (سیستمی و غیر سیستمی) هست. زمانی که شما با این روش اندازه‌گیری می‌کنید زمانی هست که برنامه شروع میشه تا زمانی که تموم میشه. این وسط به کررات سی‌پی‌یو به برنامه‌های دیگه‌ای که روی کامپیوتر شما درحال اجراست داده میشه تا اون‌ها هم اجرا بشوند. این زمان‌ها اجرا هم در زمانی که شما اندازه گیری می‌کنید به حساب میاد. شما باید تعداد سیکل‌های cpu‌ که صرف برنامه‌ی شما میشه رو اندازه گیری کنید و نه تعداد تمام سیکل‌هایی که cpu از زمان شروع برنامه‌ی شما تا زمان پایانش صرف می‌کنه. برای این کار باید از یک پروفایلر استفاده کنید نه از دستور clock().

ممنون دوست عزیز از راهنماییتان لطفا میشه کدی را که باید بنویسم بهم بدین خیلی وقتم کمه

mg1ddd
شنبه 28 فروردین 1389, 20:31 عصر
ممنون دوست عزیز از راهنماییتان لطفا میشه کدی را که باید بنویسم بهم بدین خیلی وقتم کمه

دوست عزیز شما که تا اینجا راهنمایی کردی لطفا بگو دقیقا باید چکار کنم تا زمان دقیق اجرای برنامه را بدست آورم پروفایل چیست ؟ خدا خیرت دهد

mg1ddd
شنبه 11 اردیبهشت 1389, 18:20 عصر
:گریه::گریه::گریه::گریه::گریه: :گریه::گریه:کسی جواب ما را نداد چطور میشه در c++ زمان اجرای برنامه را بطور خالص و بدون دخالت پردازشهای دیگر اندازه گیری کرد؟:گریه::گریه: