2013-09-25 3 views
1

Я кодирую немного Java-инструмент для обработки файлов mysqldump, который может стать довольно большим (до гигабайта на данный момент). Я использую этот код для чтения и обработки файла:Java-хороший размер для буфера char

BufferedReader reader = getReader(); 
BufferedWriter writer = getWriter(); 

char[] charBuffer = new char[CHAR_BUFFER_SIZE]; 
int readCharCout; 
StringBuffer buffer = new StringBuffer(); 

while((readCharCout = reader.read(charBuffer)) > 0) 
{ 
    buffer.append(charBuffer, 0, readCharCout); 
    //processing goes here 
} 

Что такое хороший размер для charBuffer? На данный момент он установлен в 1000, но мой код будет работать с произвольным размером, так что лучше всего, или этот размер можно рассчитать в зависимости от размера файла?

Спасибо впереди, привет Philipp

+3

Oracle BufferReader уже использует буфер по умолчанию '8192'. –

+0

Я не знаю, есть ли стандарт для этого, так как это будет зависеть от вашей доступной памяти. Я бы рекомендовал экспериментировать с ним разных размеров, чтобы увидеть, как он влияет на вашу производительность. – StormeHawke

+0

Или, возможно, @SotiriosDelimanolis знает об этом больше, чем я ... lol – StormeHawke

ответ

2

Оно всегда должно быть степенью 2. Оптимальное значение основано на формате операционной системы и диска. В коде, который я видел, 4096 часто используется, но чем больше, тем лучше.

Также есть better ways, чтобы загрузить файл в память.

+0

Больше, чем сила 2, она должна быть мощностью 1024. –

+0

Я пробую кучу ценностей, которые были мощью 2, все шло отлично. Но, за исключением очень небольших значений, я не мог видеть каких-либо экстраординарных достижений в производительности, но, я думаю, это связано с моей реализацией. – philipp

+0

Я мог бы быть из-за множества факторов. Многие операционные системы и контроллеры дисков достаточно умны, чтобы читать блоки раньше времени. Когда это происходит, размер вашего буфера не имеет большого значения, за исключением стоимости округления в OS API. – mikeslattery

Смежные вопросы