Kích thước bộ đệm 1k có vẻ hơi nhỏ. Nói chung, không có kích thước bộ đệm "một kích thước phù hợp với tất cả". Bạn cần đặt kích thước bộ đệm phù hợp với hành vi của thuật toán của bạn. Bây giờ, nói chung, nó không phải là một ý tưởng tốt để có một bộ đệm thực sự rất lớn, nhưng, có một mà là quá nhỏ hoặc không phù hợp với cách bạn xử lý từng đoạn không phải là tuyệt vời hoặc.
Nếu bạn chỉ đọc dữ liệu một đoạn sau khi hoàn toàn khác vào bộ nhớ trước khi xử lý, tôi sẽ sử dụng bộ đệm lớn hơn. Tôi có lẽ sẽ sử dụng 8k hoặc 16k, nhưng có lẽ không lớn hơn.
Mặt khác, nếu bạn đang xử lý dữ liệu theo kiểu truyền trực tuyến, hãy đọc một đoạn rồi xử lý dữ liệu trước khi đọc bộ đệm tiếp theo nhỏ hơn có thể hữu ích hơn. Thậm chí tốt hơn, nếu bạn đang truyền dữ liệu có cấu trúc, tôi sẽ thay đổi lượng dữ liệu được đọc để phù hợp cụ thể với loại dữ liệu bạn đang đọc. Ví dụ, nếu bạn đang đọc dữ liệu nhị phân có chứa mã gồm 4 ký tự, một phao và một chuỗi, tôi sẽ đọc mã 4 ký tự thành một mảng 4 byte, cũng như phao. Tôi sẽ đọc chiều dài của chuỗi, sau đó tạo một bộ đệm để đọc toàn bộ đoạn dữ liệu chuỗi cùng một lúc.
Nếu bạn đang thực hiện xử lý dữ liệu trực tuyến, tôi sẽ xem xét các lớp BinaryReader và BinaryWriter. Điều này cho phép bạn làm việc với dữ liệu nhị phân rất dễ dàng, mà không phải lo lắng nhiều về chính dữ liệu đó. Nó cũng cho phép bạn tách kích thước bộ đệm của bạn khỏi dữ liệu thực tế mà bạn đang làm việc. Bạn có thể đặt bộ đệm 16k trên luồng cơ bản và đọc dễ dàng các giá trị dữ liệu riêng lẻ với BinaryReader.
Điều này có thể hữu ích: http://stackoverflow.com/questions/19558435/what-is-the-best-buffer-size-when-using-binaryreader-to-read-big-files-1gb/19837238? noredirect = 1 # 19837238 –