2009-07-06 15 views
11

Lo siento si se trata de un duplicado, pero no pude encontrar una respuesta definitiva a cuál es la mejor práctica para cada tipo.Buffered vs no buffer, ¿cuál usar?

Me gustaría saber cuáles son las condiciones adecuadas que definen cuándo usar BufferedReader vs FileReader o BufferedInput/OutputStream vs FileInput/OutputStream? ¿Hay alguna fórmula que siempre te diga lo que es apropiado?

¿Debería siempre utilizar el búfer?

Gracias

+0

¿Qué quiere decir con "definitivo"? –

+0

S.Lott: Creo que solo está buscando cuando debería usar cada uno. –

+0

Supongo que es definitivo == cuál es la mejor práctica para cada tipo – stackMe

Respuesta

13

usa un buffer si la corriente va a tener un montón de pequeñas acceso. Use sin búfer si va a tener relativamente pocos accesos relativamente grandes.

3

La única vez que debe usar E/S sin búfer es cuando la demora y la agregación impuesta por el almacenamiento en búfer no es apropiada para su aplicación.

+0

¿Qué pasa cuando estás almacenando un buffer de cosas entre un InputStream y OutputStream (o viceversa) con un 'byte []'. ¿Envolverías un Buffered * a su alrededor? – Xailor

+0

No cambia nada. – chaos

2

"¿Hay alguna fórmula que siempre diga lo que es apropiado?"

Si lo había, ya estaría en las bibliotecas y no sería una decisión de diseño que tendría que tomar.

Como no hay una respuesta fácil, tiene que tomar la decisión de diseño, tiene que pensar en ello.

O bien, puede probar las dos opciones y ver cuál es "mejor" en función de su problema único y sus criterios únicos.

La mayoría de las bibliotecas de E/S estándar están en búfer. Esa es una pista de que la mayoría de las ventajas de E/S del almacenamiento en búfer. Pero no todos. Los juegos, por ejemplo, necesitan acceso sin búfer a los controles del juego.

1

Tenga en cuenta también que el BufferedReader le proporciona un método de conveniencia readLine() que le permite leer su contenido una línea a la vez.

0

Sugiero que utilice Buffered * si esto hace que su aplicación sea más rápida, de lo contrario no me molestaría. es decir, pruébelo con datos realistas para ver si esto ayuda.