Thực sự, nó không quan trọng lắm. Chắc chắn, nếu bạn sử dụng bộ đệm thực sự nhỏ, bạn có thể phải thực hiện thêm một vài cuộc gọi qua các lớp để nhận các byte (mặc dù luồng có khả năng làm ít nhất một số bộ đệm - Tôi không biết nó là gì mặc định là). Và chắc chắn, nếu bạn sử dụng bộ đệm thực sự lớn, bạn sẽ lãng phí một số bộ nhớ và giới thiệu một số phân mảnh. Vì bạn rõ ràng đang làm IO ở đây, bất cứ lúc nào bạn đạt được bằng cách tinh chỉnh bộ đệm sẽ bị chi phối bởi thời gian IO.
Như một quy tắc chung, tôi đi với một sức mạnh của hai giữa 2048 (2k) và 8192 (8k). Chỉ cần chắc chắn rằng bạn biết những gì bạn đang làm nếu bạn đi với một bộ đệm bằng hoặc lớn hơn 85.000 byte (sau đó nó là "large object" and subject to different GC rules).
Thực tế, quan trọng hơn kích thước bộ đệm là bạn giữ được bao lâu. Đối với các đối tượng bên ngoài đống đối tượng lớn, GC rất tốt trong việc xử lý các đối tượng rất ngắn (bộ sưu tập Gen 0 nhanh) hoặc các đối tượng rất dài (Gen 2). Các đối tượng sống đủ lâu để đến được Gen 1 hoặc 2 trước khi được giải thoát thì tương đối tốn kém hơn, và thường đáng giá hơn thời gian của bạn đáng lo ngại về mức độ lớn của bộ đệm.
Lưu ý cuối cùng: nếu bạn cho rằng mình gặp vấn đề về hiệu suất do kích thước bộ đệm bạn đang sử dụng, hãy kiểm tra . Đó là không, nhưng những người hiểu biết, có thể bạn có một hợp lưu kỳ lạ của phiên bản hệ điều hành, phần cứng mạng, và phát hành trình điều khiển có một số vấn đề lẻ với bộ đệm có kích thước nhất định.
Nguồn
2009-04-23 04:44:54
Bài đăng rất hữu ích, nhưng tôi nghĩ bạn có nghĩa là 8192? Sức mạnh của 2 -> 2048, 4096, 8192 (8k). – Derrick