معرفی کلاس Stopwatch

در این مقاله قصد داریم کلاس Stopwatch را به دو منظور معرفی کنیم :

1- بهینه سازی کد و میزان زمانی که برای اجرای یک قطعه کد صرف می شود

2- نمایش میزان زمانی که جهت آپلود فایل سپری می شود

بهینه سازی کد و میزان زمانی که برای اجرای یک کد صرف می شود:

قصد داریم میزان زمان لازم برای اجرا یک قطعه کد را در #C بررسی کنیم . برای اینکه میزان زمانی را که سپری میشود تا یک قعطه کد اجرا شود را محاسبه کنیم می توان از یک تایمر استفاده کرد که از زمان ورود به قطعه کد شروع و تا زمانی که به پایان قطعه کد نرسیده ایم تایمر ادامه پیدا میکند . برای این کار از کلاس StopWatch استفاده می کنیم .

 

توضیحاتی در مورد کلاس StopWatch :

این کلاس با استفاده از متدها و خاصیت هایی که دارد امکانی  را برای اندازه گیری زمان سپری شده  فراهم میکند .

متد Start : این متد در هنگام فراخوانی زمان جاری را به صورت timespan ذخیره میکند

خاصیت ElapsedTicks : این خاصیت به صورت فقط خواندنی و از نوع System.Int64 می باشد که مدت زمانی را که سپری شده است را محاسبه میکند.

خاصیت Elapsed : خروجی آن از نوع Timespan می باشد .  

ابتدا namespace های زیر را به پروژه خود بیفزاید :

using System.Diagnostics;
using System.Threading;

 

static void Main()
    {
	// Create new stopwatch
	Stopwatch stopwatch = new Stopwatch();

	// Begin timing
	stopwatch.Start();

	// Do something
	for (int i = 0; i < 1000; i++)
	{
	    Thread.Sleep(1);
	}

	// Stop timing
	stopwatch.Stop();

	// Write result
	Console.WriteLine("Time elapsed: {0}",
	    stopwatch.Elapsed);
    }

 خروجی کدهای بالا  00:00:01.0001477 می باشد که بر حسب میلی ثانیه است .

به دلیل اجرا سریع حلقه یک ، Thread  را در هر بار اجرا حلقه به میزان 1 میلی ثانیه  به منظور وقفه و درک بهتر و گرفتن یک خروجی جهت نمایش در داخل حلقه قرار دادیم تا میزان زمان افزایش یافته و یک خروجی جهت نمایش دریافت کنیم .

شما می توانید در قسمت  Do something کدهای خود را قرار داده و در انتها میزان زمانی را که صرف شده است به دست بیاورید .

نمایش میزان زمان آپلود فایل  :

در این بخش قصد داریم کدهایی را ارائه کنیم که مدت زمانی را که طول میکشد تا فایل ها در سرور  آپلود شوند را در ASP.NET Web Form بررسی کنیم . شاید روش های زیادی برای اینکار وجود داشته باشد که این به این نتیجه برسیم ولی در این مقاله از کلاس Stopwatch استفاده میکنیم . 

پروژه جدیدی به اسم از نوع ASP.NET Web Forms ساخته و یک صفحه جدید به آن اضافه نمایید 

کنترل های زیر را به صفحه اضافه نمایید :

1- FileUpload

2- Button

و یک Label برای نمایش زمان کل آپلود فایل ها 

 <div>
    <asp:FileUpload runat="server" ID="FileUpload" AllowMultiple="true" />
        <asp:Button runat="server" ID="btnUpload" Text="آپلود" OnClick="btnUpload_Click" />
        <br />
        <asp:Label ID="lblTotaltime" runat="server"></asp:Label>
    </div>

 دلیل افزودن خاصیت AllowMultiple به  تگ FileUpload به این دلیل است که اجازه انتخاب و آپلود همزمان چندین فایل داده شود .

ابتدا namespace زیر را به صفحه خود اضافه کنید :

using System.Diagnostics;

کدهای زیر مربوط به دکمه آپلود می باشد .

  Stopwatch StopWatchObj = new Stopwatch();
        StopWatchObj.Start();
        int count = 0;
        foreach (var item in FileUpload.PostedFiles)
        {
            string Extension = Path.GetExtension(item.FileName);
            string FileName = new Random().Next(1, 50).ToString()+Extension;
            item.SaveAs(Server.MapPath("~")+"//File//"+FileName);
            count++;
        }
        StopWatchObj.Stop();
        lblTotaltime.Text = string.Format("{0} File(s) Uploaded  {1} Second",count,StopWatchObj.ElapsedMilliseconds/1000);

Total-time

اما توضیح کدهای بالا :

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

قبل از ورود به حلقه و آپلود عکس های متد ()Start شی StopWatchObj را اجرا میکنیم .

برای گرفتن میزان زمانی که از زمان فراخوانی متد Start تا زمانی فراخوانی متد Stop از خاصیت ElapsedMilliseconds مربوط به نمونه ساخته شده استفاده میکنیم ، مقداری را که بر می گرداند از نوع صحیح (INT)  و بر حسب میلی ثانیه می باشد و در انتها برای نمایش آن بر حسب ثانیه مقدار آن را بر 1000 تقسیم می کنیم تا بر حسب ثانیه نشان دهیم .


توسط : عثمان رحیمی  1 ماه قبل ، پنج شنبه 10 مهر 1393 ساعت 23:28  0  1991

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط