PDA

View Full Version : محاسبه دقیق زمان اجرای یک تابع در سی شارپ



kiani_behzad
پنج شنبه 06 اردیبهشت 1386, 15:20 عصر
سلام
من یک پروژه ی سنگین ساختمان داده توی سی شارپ نوشتم. حالا لازم دارم که زمان اجرای بعضی از توابعی رو که نوشتم محاسبه کنم بر حسب میکرو ثانیه یا نانو ثانیه. اما نمی دونم از چه دستوراتی استفاده کنم لطفا" راهنمایی کنید.
لازم به ذکر است که من از کلاس DateTime به صورت زیر استفاده کردم اما دو تا مشکل داشتم یکی این که حداکثر دقتش در حد میلی ثانیه هست و دیگیری اینکه بعضی وقتا زمان اجرا رو منفی میده!!!!!!!!!!!
به این صورت استفاده کردم اول دستورات تابع نوشتم:
int a=DateTime.Now.MiliSecond;
آخر دشتورات تابع هم نوشتم:
int b=DateTime.Now.Milisecond;
بعد b-a رو به عنوان زمان اجرا به خروجی بردم.

omid_Ahmadi
پنج شنبه 06 اردیبهشت 1386, 16:07 عصر
از کلاس System.Diagnostics.Stopwatch استفاده کن. مثال استفاده از این کلاس رو هم می تونی توی MSDN پیدا کنی.

samish
پنج شنبه 04 تیر 1394, 10:42 صبح
سلام
من یه برنامه توی c# form application نوشتم، می خوام زمان اجرای کل برنامه رو بر حسب ثانیه بدست بیارم . چجوری باید این کد رو نوشت؟

alireza264
پنج شنبه 04 تیر 1394, 14:43 عصر
سلام
اندازهگیریه میکرو و نانو ثانیه در PC وجودنداره
دلیل منفی بودن این که ممکنه اولی 89 ملی ثانیه باشه دومی 27
اگه می خوای اختلاف رو حساب کنی


اول دستورات تابع
a = DateTime.Now;

.
.
.
آخر دستورات تابع
b = DateTime.Now;

(b - a).TotalMinutes اختلاف به دقیقه
(b - a).TotalSeconds اختلاف به ثانیه
(b - a).TotalMilliseconds اختلاف به میلی ثانیه
(b - a).TotalHours اختلاف به ساعت

rahnema1
پنج شنبه 04 تیر 1394, 15:25 عصر
سلام
روش بهتر استفاده از stopwatch هست
دقت کنید برنامه را در حالت release کامپایل کنید و برای اجرای برنامه هم روی فایل exe اون دوبار کلیک کنید. یعنی برنامه را از داخل visual studio اجرا نکنید
جواب به میلی ثانیه به شما میده که تقسیم بر 1000.0 کنید جواب به ثانیه میده

System.Diagnostics.Stopwatch sw;

sw= Stopwatch.StartNew();
/// اینجا برنامه ای که می خواهید زمانش را بسنجید بذارید
sw.Stop();
MessageBox.Show(sw.ElapsedMilliseconds.ToString()) ;