.net - unity - ¿Cuál es el tamaño del búfer predeterminado para StreamWriter?
streamwriter tutorial (1)
Para el public StreamWriter(Stream stream)
, MSDN dice
Inicializa una nueva instancia de la clase StreamWriter para la secuencia especificada utilizando la codificación UTF-8 y el tamaño del búfer predeterminado.
Quiero usar una de las sobrecargas de otros constructores, pero me gustaría usar el tamaño del búfer predeterminado. ¿Cuál es el tamaño predeterminado del búfer? MSDN no dice en ninguna parte. La respuesta de Rubens Farias here dice que es "4 KiB" (lo que sea que signifique ... ¿KB, supongo?), Pero no hay un vínculo que lo demuestre.
Ah cuando la documentación falla, descompilar. ¡Siempre me olvido de eso!
Bueno, no hagas eso. Ya no es necesario, puede consultar el código fuente real que escribieron los programadores de Microsoft. Siempre mejor que el código descompilado, tiene comentarios.
Visite el sitio web de Reference Source . Se actualizó hace aproximadamente un año, ahora tiene una interfaz de navegador muy elegante que en realidad es más rápida que un descompilador. Simplemente escriba StreamWriter en el cuadro de búsqueda. Te lleva como máximo una docena de segundos para descubrir:
// For UTF-8, the values of 1K for the default buffer size and 4K for the
// file stream buffer size are reasonable & give very reasonable
// performance for in terms of construction time for the StreamWriter and
// write perf. Note that for UTF-8, we end up allocating a 4K byte buffer,
// which means we take advantage of adaptive buffering code.
// The performance using UnicodeEncoding is acceptable.
internal const int DefaultBufferSize = 1024; // char[]
private const int DefaultFileStreamBufferSize = 4096;
Así que el valor predeterminado es 1024 caracteres para el StreamWriter. Y si escribe en un archivo en lugar de una secuencia, entonces hay un FileStream con un búfer de 4096 bytes, no puede cambiar eso. Si expone un problema clásico con los comentarios, tienen una habilidad especial para no mantenerse y no coinciden con el código. El noodling sobre "búfer adaptativo" no está implementado en realidad. Un KiB es un animal con 1024 dedos, nunca 1000.