나는 버스트 (burst)로 로그인하고 데이터 경로를 최적화하기 위해 많은 것을 쓰고있다. 로그 텍스트는 StringBuilder
으로 작성합니다. 가장 효율적인 초기 용량, 메모리 관리가 무엇이겠습니까? 그래서 JVM과 상관없이 잘 작동할까요? 목표는 재 할당을 거의 항상 피하는 것이고, 이는 약 80-100의 초기 용량으로 커버되어야합니다. 그러나 StringBuilder 인스턴스가 버퍼에서 멈추거나 쓸데없는 바이트가 자르기 때문에 가능한 한 적은 바이트를 낭비하고 싶습니다.StringBuilder의 가장 효율적인 초기 용량 크기는 무엇입니까?
나는 이것이 JVM에 달려 있다는 것을 알았지 만, 최소한의 바이트를 낭비 할 수있는 값이 있어야한다. JVM에 상관없이, "최소 공통 분모"일종의 것이다. 현재 128-16
을 사용 중입니다. 128은 멋진 라운드 번호이고, 빼기는 할당 오버 헤드입니다. 또한 이것은 "조숙 한 최적화"의 사례로 간주 될 수 있지만 이후의 대답은 "엄지 손가락 기준"숫자이므로 이후에 유용 할 것임을 알고 있습니다.
나는 "나의 가장 좋은 추측"대답을 기대하지 않고있다. (내 자신의 대답은 이미 그 것이다.) 나는 누군가가 이것을 이미 연구했고 지식 기반 대답을 공유 할 수 있기를 바란다.
이 질문에 대한 답변은 많은 부분에 달려 있습니다. 예를 들어 텍스트가 'StringBuilder'에 저장되는 시간 등이 있습니다. 유일한 방법은 메모리 및/또는 CPU 프로파일 러를 사용하는 측정입니다. 수십만 개의'StringBuilder' 객체를 생성하지 않는다면 몇 바이트를 걱정할 이유가 없습니다. – Jesper
가장 큰 오버 헤드는 IO 비용입니다. 이 데이터를 IO에 쓰지 않으려는 경우가 아니라면 걱정하지 않으셔도됩니다. –