2011-12-27 26 views
5

Tôi cần phân tích chi phí hiệu năng của logic được lập trình của mình bằng trình gỡ lỗi C#. Vì vậy, tôi cần phải so sánh hai logic trong mã của tôi. Tôi không muốn cài đặt bất kỳ tiện ích nào như Phân tích vào VisualStudio của tôi. Tôi muốn phân tích mô-đun bằng cách viết các hàm đặc biệt. Chúng tôi có bất kỳ chức năng được xác định trước nào có sẵn trong C# không? Tôi cần tất cả các tùy chọn có sẵn để thử nghiệm một mô-đun cho GOOD (tốt tôi có nghĩa là phải mất thời gian ngắn nhất để thực hiện) FYI Tôi sử dụng phiên bản VisualStudio 2010 Professional.Tìm hiểu xem có bao nhiêu phần nghìn giây mà chương trình C# đã thực hiện trong trình gỡ rối của bạn

+3

Bạn không thể sử dụng một trình gỡ lỗi để đo Perf, nó làm chậm bạn chương trình xuống. Sử dụng một hồ sơ. Bạn đã mua sai giấy phép nếu bạn không muốn sử dụng tiện ích bổ sung, VS Prof không có hồ sơ. –

+1

Các trình thu thập khác nhau có sẵn, chẳng hạn như RedGate ANTS. Hầu hết trong số này có phiên bản dùng thử nếu bạn muốn cung cấp cho họ một đi. –

Trả lời

10

Nếu bạn chỉ muốn đo thời gian mà hàm cần thực thi, bạn có thể sử dụng lớp Stopwatch.

mẫu:

Stopwatch stopWatch = new Stopwatch(); 
stopWatch.Start(); 
CallYourFunction(); 
stopWatch.Stop(); 
// Get the elapsed time as a TimeSpan value. 
TimeSpan ts = stopWatch.Elapsed; 
2

Make sử dụng StopWatch lớp avaialble trong System.Diagnostics namesapce

Stopwatch stopWatch = new Stopwatch(); 
stopWatch.Start(); 
//instead of this there is line of code that you are going to execute 
Thread.Sleep(10000); 
stopWatch.Stop(); 
// Get the elapsed time as a TimeSpan value. 
TimeSpan ts = stopWatch.Elapsed; string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds/10); 

Full bài viết: Get time of Code Execution Using StopWatch

2

Nếu bạn chỉ muốn để đo thời gian thực hiện bạn có thể sử dụng Stopwatch lớp.

Nói chung, bạn có thể hưởng lợi từ mọi thứ trong không gian tên System.Diagnostics.

1

Bạn có thể viết một hàm như thế này

CalculateTime() 
    { 
     //create timer 
     Stopwatch sw = new Stopwatch(); 
     //start measuring time 
     sw.Start(); 
     //your logic you want to measure 
     //stop recording time 
     sw.Stop(); 

     //you can calculate result using sw.ElapsedTicks; 
    } 
3

Các công cụ thông thường cho việc làm này là hồ sơ. Nếu bạn có phiên bản Ultimate hoặc Premium của Visual Studio 2010, bạn có thể sử dụng trình cấu hình sẵn có bằng cách làm theo các hướng dẫn sau: Beginners Guide to Performance Profiling.

Để đơn giản đo thời gian chính xác trong một ứng dụng .NET, bạn có thể sử dụng Stopwatch:

// you usually need a lot of iterations to get a stable and accurate measurement 
int iterations = 10000; 
Stopwatch stopwatch = Stopwatch.StartNew(); 

// It is important to do as little as possible between starting the 
// stopwatch and calling your function. If you need to allocate memory 
// or do any startup actions, do them before you start. 
for (int i = 0; i < iterations; ++i) 
{ 
    YourFunction(); 
} 

// Similarly, don't do anything more after your code is done, just get 
// the elapsed time immediately. 
TimeSpan totalDuration = stopwatch.Elapsed; 
TimeSpan durationForEachIteration = 
    TimeSpan.FromTicks(totalDuration.Ticks/iterations); 
Các vấn đề liên quan