¿Alguna razón para no utilizar el aburrido normal ByteArrayOutputStream?
Según lo mencionado por miku anteriormente, Evan Jones gives a review of different types y muestra que es muy dependiente de la aplicación. Entonces, sin saber más detalles, es difícil especular.
Comenzaría con ByteArrayOutputStream, y solo si los perfiles muestran que es su cuello de botella de rendimiento se mueven a otra cosa. A menudo, cuando crees que el código del búfer es el cuello de botella, en realidad será una red u otro IO: espera hasta que el perfil demuestre que necesitas una optimización antes de perder tiempo encontrando un reemplazo.
Si se está mudando a otra cosa, a continuación, otros factores que tendrán que pensar:
- Usted ha dicho que está utilizando el uso de un solo subproceso, por lo que no es necesaria la sincronización de BAÑOS
- lo que es el ¿Se está llenando y alimentando el búfer? Si alguno de los extremos ya está conectado para usar Java NIO, entonces usar un ByteBuffer directo es muy eficiente.
- ¿Está utilizando un búfer circular o un búfer lineal simple? Si usted es entonces el Ostermiller Utils es bastante eficiente, y GPL'd
Nota al margen: Microbenchmarking y notas sobre los búfers de byte: http://www.evanjones.ca/software/java-bytebuffers.html – miku
cómo se compara el rendimiento y el uso de un único subproceso, un byte normal [] supera cualquier cosa fácilmente. – bestsss
no puedo usar byte [] porque no conozco la longitud de los datos que tengo que escribir. – Worker