Sử dụng Stopwatch so sánh tốc độ xử lý trong .Net

Test ứng dụng có lẽ là khái niệm không còn xa lạ với dân lập trình viên, đặc biệt là các tester để xử lý lỗi, so sánh tốc độ xử lý… Việc viết Unit Test có thể không phải lập trình viên nào cũng có thể làm tốt và hiệu quả được, việc viết test sẽ đảm bảo chương trình của bạn tốt hơn, ít lỗi hơn, tốc độ xử lý cải thiện hơn khi sử dụng các thuật toán, loại dữ liệu, hàm chức năng phù hợp.

Trong phạm vi bài viết mình không nói về Unit Test trong việc kiểm tra, so sánh tốc độ xử lý của chương trình, hàm chức năng nào đó ? Mà mình muốn nói đến Stopwatch. Đúng vậy, bằng cách viết 1 đoạn mã ngắn gọn như sau là mình đã có thể kiểm tra được tốc độ xử lý tương đối giữa các thao tác xử lý một đoạn mã lệnh nào đó.

Ví dụ sau mình dùng Stopwatch để kiểm tra hiệu xuất khi sử dụng Generic collection và non-Generic collection trong việc lưu trữ dữ liệu vào mảng dạng danh sách.

Stopwatch wt = new Stopwatch();
string tmpStr=string.Empty;
List<string> ListGenerateCollection=new List<string>();
ArrayList ListNonGenerateCollection=new ArrayList();
wt.Start();
for (int i = 0; i < 10000; i++)
{
    ListGenerateCollection.Add(i.ToString());
}
wt.Stop();
tmpStr+="List<T>: "+wt.Elapsed.ToString()+"\r\n";

wt.Reset();
wt.Start();
for (int i = 0; i < 10000; i++)
{
    ListNonGenerateCollection.Add(i);
}
wt.Stop();
tmpStr+="ArrayList: "+wt.Elapsed.ToString()+"\r\n";
MessageBox.Show(tmpStr,"^^");

Kết quả hiển thị sau khi chạy ứng dụng cho thấy sử dụng Generic Collection (các tập hợp định kiểu strong-type, kiểu dữ liệu mạnh) trong .Net tốc độ xử lý nhanh hơn so với Non-Generic Collection (các tập hợp không định kiểu: object). Tuy nhiên, đây chỉ là ví dụ để so sánh tốc độ xử lý tương đối, còn việc sử dụng Generic collection hay non-Generic collection nó phụ thuộc vào yêu cầu của chương trình cũng như loại dữ liệu yêu cầu.

Bạn có thể sử dụng đoạn mã trên để kiểm tra quá trình load dữ liệu, so sánh function (ví dụ tốc độ xử lý giữa SubString và Remove), hay loại xử lý mà trong đó KHÔNG phải phụ thuộc vào độ trễ của tiến trình.

Related Posts

About The Author

Add Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.