اندازه گیری زمان اجرا

farzaneh0

New Member
با سلام :cry::cry::cry::cry::cry::cry:
بنده برنامه ای در c++ نوشته ام و زمان اجرای آن را با کد زیر اندازه گیری کرده ام ولی مشکلی که دارم این است که به ازای ورودی یکسان هر بار زمان اجرا متفاوت از دفعه قبل است؟؟

clock_t begin,end;
begin=clock();
برنامه ای که می خوام زمان آن را اندازه گیری کنم
end=clock();
d=((end-begin)*1000)/CLOCKS_PER_SEC;
cout<<d;
 

the_king

مدیرکل انجمن
با سلام :cry::cry::cry::cry::cry::cry:
بنده برنامه ای در c++ نوشته ام و زمان اجرای آن را با کد زیر اندازه گیری کرده ام ولی مشکلی که دارم این است که به ازای ورودی یکسان هر بار زمان اجرا متفاوت از دفعه قبل است؟؟

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

farzaneh0

New Member
شرایط اجرای یک کد خیلی به ندرت یکسان خواهد بود، مخصوصا در پردازنده و سیستم عامل های مدرن.
طبیعتا از کار انداختن تمامی وقفه ها و پردازه های جور واجوری که در خلال اجرای کد تان اجرا می شوند میسر نیست.
به همین جهت منطقی است که چنین اختلافی را مشاهده کنید، مخصوصا که از واحد زمانی خیلی کوچک (و البته دقیقی)
استفاده می کنید.

ممنون دوست عزیز ولی یک سوال داشتم من که می خواهم زمان اجرای چند کد را با هم مقایسه کنم این امر مشکلی ایجاد نمی کند؟؟:)
 

the_king

مدیرکل انجمن
ممنون دوست عزیز ولی یک سوال داشتم من که می خواهم زمان اجرای چند کد را با هم مقایسه کنم این امر مشکلی ایجاد نمی کند؟؟:)

مساله رو اینطوری در نظر بگیرید که یک کورنومتر خیلی دقیق بهتان داده اند که تا یک نانو ثانیه دقت داره،
ولی چون باید با فشار دکمه زمان را ثبت کنید کنترل خوبی روی میلی ثانیه و از آن کمتر اش ندارید.
چطور با این کورنومتر سرعت دست زدن (کف زدن) دو نفر را با هم مقایسه می کنید؟
شخصا در اینجور موارد پیشنهاد می کنم که آن دو نفر بجای یکبار دست زدن 50 بار دست بزنند. طبیعتا
شما مجموع زمان این 50 بار دست زدن را با درصد دقت بهتری ثبت خواهید کرد، چون هر قدر هم که در فشار دادن
دکمه ها تاخیر داشته باشید بین 50 مورد پخش می شود و اثر کمتری خواهد داشت.

حالا این مساله را به کد تان تعمیم دهید، می توانید یک حلقه while بسازید که اجرای کد اول تان را بجای یکبار
آنقدر تکرار کند که زمان یک دقیقه به پایان برسد. سپس اجرای کد دوم را هم آنقدر تکرار کند یک دقیقه
سپری شود. اکنون می توانید بر اساس تعداد اجرا های کد اول و دوم در یک دقیقه یک نسبت درصد بین ایندو کد
بدست آورید. مثلا تعداد تکرار های اجرای کد اول 1.25 برابر کد دوم است، یعنی کد اول 25 درصد از کد دوم سریعتر
است.
 

جدیدترین ارسال ها

بالا