Cấp bậc tác giả:

TRAINING

So sánh hiệu suất của FirstOrDefault và DictionaryKey

Được viết bởi webmaster ngày 07/06/2021 lúc 11:59 AM
Tôi muốn chia sẻ hiệu suất thú vị khi bạn xử lý các kích thước tập dữ liệu lớn để truy xuất dữ liệu. Trong lập trình hàng ngày, chúng ta sẽ thực hiện các yêu cầu nhưng tất cả chúng ta đều thất bại tại một số điểm trong việc đo lường hiệu suất trên logic/mã được triển khai.
  • 0
  • 84

So sánh hiệu suất của FirstOrDefault và DictionaryKey


Tôi muốn chia sẻ hiệu suất thú vị khi bạn xử lý các kích thước tập dữ liệu lớn để truy xuất dữ liệu. Trong lập trình hàng ngày, chúng ta sẽ thực hiện các yêu cầu nhưng tất cả chúng ta đều thất bại tại một số điểm trong việc đo lường hiệu suất trên logic/mã được triển khai. Khi ứng dụng phát triển lớn, có thể có khả năng gặp sự cố rò rỉ bộ nhớ và giảm hiệu suất khi chúng ta không thực hiện đo lường phù hợp về việc cải thiện mã.
 
Ở đây chúng ta sẽ thấy khi sử dụng FirstOrDefault và DictionaryKey để lấy dữ liệu từ tập dữ liệu.
 
Tôi lấy một ví dụ về hệ thống Aadhaar, nó có hàng tỷ mục nhập Aadhaar được lưu trữ và tôi cần truy xuất một chi tiết Aadhaar cụ thể từ một tỷ. Hãy thử với FirstOrDefault và DictionaryKey để lấy dữ liệu từ một tỷ mục nhập Aadhaar.
 
Hãy xem trong cấp độ mã và mã nào sẽ giành chiến thắng !!!
 
Tạo hạt giống Aadhaar gồm 1 triệu bản ghi như hình bên dưới
truy-xuat-du-lieu-01.png

Ở đây tôi có một vài mẫu số Aadhaar và chúng ta hãy đánh giá hiệu suất và cái nào cần được sử dụng.
truy-xuat-du-lieu-02.png

Đây là thời gian thực hiện và kết quả

truy-xuat-du-lieu-03.png

Việc truy xuất dữ liệu bằng DictionaryKey nhanh hơn so với hàm FirstOrDefault() LINQ. Ở đây chúng ta thấy có sự khác biệt rất lớn về thời gian thực hiện để lấy dữ liệu theo cả hai cách.
 
Dữ liệu đã được truy xuất bởi FirstOrDefault() mất ~20,02 mili giây. Cùng một dữ liệu được lấy bởi DictionaryKey chỉ mất ~0,0017 mili giây. Sẽ rất ngạc nhiên!
 
Bạn nên sử dụng Dictionary collection khi xử lý lượng lớn dữ liệu. Câu lệnh LINQ FirstOrDefault() phù hợp với lượng dữ liệu nhỏ.
 
Chỉ cần thực hiện một kịch bản khác, nếu bạn muốn truy xuất các chi tiết Aadhaar sau với 40-50 bản ghi và lưu trữ chúng trong tập dữ liệu khác. Chỉ cần tưởng tượng, sẽ mất bao nhiêu thời gian để truy xuất tất cả 40-50 bản ghi bằng câu lệnh LINQ FirstOrDefault() hoặc DictionaryKey?. Với thời gian tích lũy của tất cả 40-50 bản ghi bởi câu lệnh LINQ FirstOrDefault() sẽ nhiều hơn là bởi một truy xuất dữ liệu DictionaryKey.
 
Hai cách triển khai đều có những ưu điểm riêng và chúng ta cần xác định, những dữ liệu này được sử dụng thường xuyên như thế nào, có thể là kích thước của bộ sưu tập hay không, tất cả dữ liệu đều được sử dụng nhiều nhất. Dựa trên những tiêu chí này, bạn có thể quyết định cái nào phù hợp nhất.

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML