PDA

View Full Version : سوال: سرعت برنامه



Changer
شنبه 01 مرداد 1390, 01:04 صبح
با سلام
سرعت اجرا شدن یک برنامه را چگونه می توان بدست آورد؟
متشکرم

mehran_sh_t
شنبه 01 مرداد 1390, 01:29 صبح
اگر زمانش رو می خواید، قبل از شروع اولین دستور، یک بار زمان فعلی رو چاپ کنید، بعد از اتمام آخرین دستور هم همین کار رو بکنید

kamran00f
شنبه 01 مرداد 1390, 03:26 صبح
اگر زمانش رو می خواید، قبل از شروع اولین دستور، یک بار زمان فعلی رو چاپ کنید، بعد از اتمام آخرین دستور هم همین کار رو بکنید

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

Only Enrique
شنبه 01 مرداد 1390, 11:42 صبح
به طور مثال من این برنامه کنسول رو نوشتم که زمان اجرای یک متد و Average زمان رو بر حسب میلی ثانیه به دست میاره !

using System;
using System.Linq;

namespace Ticks
{
class Program
{
static void Main(string[] args)
{
long[] Avarage = new long[100];
for (int x = 0; x < 100; x++)
{
long tick = SpeedMilliseconds();
Avarage[x] = tick;
Console.WriteLine(tick);
}

Console.WriteLine("Average Time: " + Avarage.Average());
Console.ReadLine();
}
static long SpeedMilliseconds()
{
DateTime dt = DateTime.Now;
string s = "" ;
for (int x = 0; x <5000; x++)
{
s += "Ali OOC";
}
DateTime last = DateTime.Now;
TimeSpan ts = last - dt;
return ts.Milliseconds;
}
}
}

Changer
شنبه 01 مرداد 1390, 13:22 عصر
با سلام خدمت دوستان
من دو برنامه نوشتم که جفتشون هم یک کار را انجام می دهند می خواهم ببینم کدام الگوریتم سریعتر است
ممنون.

group45
شنبه 01 مرداد 1390, 16:15 عصر
با سلام
اون چیزی که تو دانشگاه به ما یاد دادن محاسبه از روی کدها بوده. برای فهمیدن موضوع سراغ کتابهای طراحی الگوریتم و ساختمان داده ها بگرد.. البته اگه نخوندیشون.. بنظرم این جوری علمی تره

yeganehaym
شنبه 01 مرداد 1390, 16:25 عصر
برای این که بخوای متوجه شی کدوم الگوریتم سریعتره باید باید از روش های زیر استفاده کنید (مرتبه اجرایی)

مثلا برنامه زیر در نظر بگیر


int i=0;
int x=n;

for(i=0,i<=x,i++)
console.write(i.tostring());




دو خط اول دو دستور حساب میشن و وقتی به حلقه با تعداد گردش n میرسن برای خود دستور حلقه n+1 حساب می کنی و برای دستورات داخل حلقه n دستور
پس مرتبه اجرایی این برنامه رو باید طبق فرمول زیر به دست بیاری

(n+1)+n+2
n^2 +3
پس مرتبه اجراییش میشه n^2

حالا اون یکی الگوریتم رو هم حساب می کنی و هر کدوم مرتبه اجراییش کمتر بود به عنوان الگوریتم بهینه انتخاب می کنی
گاهی اوقات با توجه به ورودی ممکنه از یه جایی به بعد الگوریتمی که مرتبه زمنیش بیشتر بهینه تر باشه و سرعت بیشتری رو داشته باشه