Стоит ли объединять массивы byte [] и char [] или лучше просто создайте

Мой код выполняет много операций ввода / вывода, и это часто связано с созданием временных массивов для хранения байтов или символов определенного размера - я часто использую 4096. Я начинаю задумываться - без реальных тестов - чтобы проверить, будет ли это лучше объединить эти массивы. Мой код изменится на что-то вроде этого

take array from pool
try {
   read from one inputStream
   write to another outputstream using array
} finally {
   return array to pool
}
  • - быстрее взять или просто создать байт с 4096, что означает, что требуется некоторая работа для выделения памяти в куче, очистки 4096 байтов и т. Д. Я написал небольшую программу, которая делала две вещи: создавала массивы и использовала общий пул apache. Оба зацикливались много раз (100 * 100 * 100) и создавали / брали, заполняли массив, а затем отпускали. Вначале я добавил несколько ходов, чтобы разогреть джит, и проигнорировал их результаты. Каждый запуск запускал формы создания и пула дюжину раз, чередуя их.

    Между пулом и формами создания не было большой разницы. Однако, если я добавил чистый массив к обратному вызову, который запускается пулом сообщества apache, когда экземпляр возвращается в пул, пул стал намного медленнее, чем созданная форма.

7
задан Cœur 11 December 2017 в 07:28
поделиться