PDA

View Full Version : سوال: محاسبه ی زمان پردازش برنامه در سی شارپ



kamran_14
دوشنبه 18 آذر 1392, 21:50 عصر
سلام
خسته نباشید
من برنامه ای در سی شارپ نوشتم و می خوام زمان پردازش برنامه ام رو هنگام اجرا محاسبه کنم.آیا تابعی برای محاسبه ب زمان پردازش وجود داره؟

rahnema1
سه شنبه 19 آذر 1392, 00:57 صبح
DateTime dt;
TimeSpan ts;
dt=DateTime.Now;
int a;
for (int i = 0; i < 100000; i++) {
a=i;
}
ts = DateTime.Now.Subtract(dt);
MessageBox.Show(ts.Hours+":"+ts.Minutes+":"+ts.Seconds+":"+ts.Milliseconds);

kamran_14
سه شنبه 19 آذر 1392, 17:28 عصر
ممنون از جوابتون
می شه زمان رو کمتر از میلی ثانیه پیداکنیم؟

مهرداد صفا
سه شنبه 19 آذر 1392, 17:45 عصر
سلام.

System.Diagnostics.Stopwatch SW = new System.Diagnostics.Stopwatch();
SW.Start();

for (int i = 0; i < 10000000; i++)
{
}
SW.Stop();
MessageBox.Show(SW.ElapsedMilliseconds.ToString()) ;

MessageBox.Show(SW.Elapsed.Ticks.ToString());

salehsam
سه شنبه 19 آذر 1392, 17:52 عصر
دوستان میشه لطف کنین بگین این کد رو کجا باید قرار بدیم تا به سرعت محاسبه دسترسی پیدا کنیم؟:خجالت:
ممنون

habibb
سه شنبه 19 آذر 1392, 18:02 عصر
دوستان میشه لطف کنین بگین این کد رو کجا باید قرار بدیم تا به سرعت محاسبه دسترسی پیدا کنیم؟:خجالت:
ممنون
سلام در این پست برای محاسبه زمان الگوریتم درخت برنده استفاده شده البته با یک روش دیگر (http://barnamenevis.org/showthread.php?196747-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%87%D8%A7%DB%8C-Open-Source&p=1919642&viewfull=1#post1919642)

به روش Stopwatch

مهرداد صفا
سه شنبه 19 آذر 1392, 18:04 عصر
دوستان میشه لطف کنین بگین این کد رو کجا باید قرار بدیم تا به سرعت محاسبه دسترسی پیدا کنیم؟:خجالت:
ممنون

قبل از شروع پردازش مورد نظر متود
System.Diagnostics.Stopwatch.Start() را فراخوانی کنید و بعد از پایان پردازش با متود
System.Diagnostics.Stopwatch.Stop() شمارنده را متوقف کنید. از طریق خصوصیت ElapsedXXX هم به زمان سپری شده دست پیدا می کنید.

فاطمه_14
سه شنبه 19 آذر 1392, 18:42 عصر
System.Diagnostics.Stopwatch SW = new System.Diagnostics.Stopwatch();
SW.Start();

for (int i = 0; i < 10000000; i++)
{
}
SW.Stop();
MessageBox.Show(SW.ElapsedMilliseconds.ToString()) ;

MessageBox.Show(SW.Elapsed.Ticks.ToString());


سلام
می شه بگید خروجی این 2 تا برحسب چی اند؟اولی برحسب میلی ثانیه است و دومی بر حسب چیه؟

habibb
سه شنبه 19 آذر 1392, 18:53 عصر
//میلی ثانیه
MessageBox.Show(string.Format("Timer :{1}", s.Elapsed));
//میلی ثانیه
MessageBox.Show(string.Format("Timer :{1}", s.ElapsedMilliseconds));
//هر دو تاش یکیه
//نمایش مقدار زمان صرف شده در قالب میلی ثانیه

rahnema1
سه شنبه 19 آذر 1392, 20:00 عصر
در تکمیل مطالب مهرداد صفا (http://barnamenevis.org/member.php?261217-مهرداد-صفا) برای بدست آوردن مقدار تیک بر حسب نانو ثانیه این کار رو بکنید:

MessageBox.Show(SW.ElapsedTicks*1000000000L/SW.Frequency);

فاطمه_14
سه شنبه 19 آذر 1392, 20:43 عصر
MessageBox.Show(SW.Elapsed.Ticks.ToString());
ممنون.
مقدار تیک، همون زمان سیستمه؟

rahnema1
سه شنبه 19 آذر 1392, 20:56 عصر
ممنون.
مقدار تیک، همون زمان سیستمه؟

A tick is the smallest unit of time that the Stopwatch (http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch(v=vs.110).aspx) timer can measure

منبع:http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.elapsedticks(v=vs.110 ).aspx

فاطمه_14
چهارشنبه 20 آذر 1392, 11:35 صبح
چرا زمان اجرای یک برنامه در هر بار که خروجی را می بینیم متفاوته؟
من زمان برنامه را برحسب میلی ثانیه اندازه می گیرم

mousa1992
چهارشنبه 20 آذر 1392, 16:19 عصر
چرا زمان اجرای یک برنامه در هر بار که خروجی را می بینیم متفاوته؟
من زمان برنامه را برحسب میلی ثانیه اندازه می گیرم

تقریبا میشه گفت هیچ وقت دو مقدار یکسان بدست نمیاری - چون زمان انجام عملیات شما بستگی به cpu داره که چه پروسه های دیگه ای رو غیر از برنامه شما داره پردازش میکنه

habibb
چهارشنبه 20 آذر 1392, 17:14 عصر
چرا زمان اجرای یک برنامه در هر بار که خروجی را می بینیم متفاوته؟
من زمان برنامه را برحسب میلی ثانیه اندازه می گیرم

چون CPU همیشه نوسان داره . این نوسانات داخل Task Manager قابل دیدنه حتی گرمای اتاق هم میتونه روش تاثیر بگذاره