Tôi đang viết rất nhiều thứ để đăng nhập các cụm và tối ưu hóa đường dẫn dữ liệu. Tôi xây dựng văn bản tường trình với StringBuilder
. Điều gì sẽ là năng lực ban đầu hiệu quả nhất, quản lý bộ nhớ khôn ngoan, vì vậy nó sẽ làm việc tốt bất kể JVM? Mục đích là để tránh tái phân bổ hầu như luôn luôn, cần được bao phủ bởi công suất ban đầu khoảng 80-100. Nhưng tôi cũng muốn lãng phí càng ít byte càng tốt, kể từ khi thể hiện StringBuilder có thể treo xung quanh trong bộ đệm và lãng phí các byte tạo ra.Kích thước dung lượng ban đầu hiệu quả nhất cho StringBuilder?
Tôi nhận thấy điều này phụ thuộc vào JVM, nhưng phải có một số giá trị, sẽ lãng phí ít byte nhất, bất kể JVM, loại "mẫu số chung nhỏ nhất". Tôi hiện đang sử dụng 128-16
, trong đó 128 là số tròn đẹp, và trừ cho chi phí phân bổ. Ngoài ra, điều này có thể được coi là trường hợp "tối ưu hóa sớm", nhưng vì câu trả lời tôi là sau đây là số "quy tắc-ngón tay cái", biết rằng nó sẽ hữu ích trong tương lai.
Tôi không mong đợi câu trả lời "phỏng đoán tốt nhất của tôi" (câu trả lời của tôi ở trên đã là), tôi hy vọng ai đó đã nghiên cứu điều này và có thể chia sẻ câu trả lời dựa trên tri thức.
Câu trả lời cho câu hỏi này phụ thuộc vào rất nhiều thứ, ví dụ: văn bản bạn lưu trữ trong một chuỗi 'StringBuilder' vv. Cách duy nhất để tìm ra là đo bằng cách sử dụng bộ nhớ và/hoặc cấu hình CPU. Không có lý do gì để lo lắng về một vài byte trừ khi bạn đang tạo hàng trăm nghìn đối tượng 'StringBuilder'. – Jesper
Đến nay chi phí lớn nhất là chi phí của IO. Trừ khi bạn không có ý định ghi dữ liệu này vào IO, tôi sẽ không lo lắng về nó. –