String.getBytes () быстрее, чем charset.encode - PullRequest
0 голосов
/ 09 июля 2020

Когда использовать String.getBytes ("") и Charset.enocde (String)?

a) использование строки getbytes return "testingtestingtestingtesting" .getBytes (StandardCharsets.UTF_8);

б) использование кодировки кодировки Charset charset = Charset.forName (StandardCharsets.UTF_8.toString ()); return charset.encode ("testingtestingtestingtestingtesting"). array ()

Быстрое тестирование предполагает, что str.getbytes намного быстрее, чем charset.encode.

  1. Почему str.getbytes является быстрее, чем charset.encode

  2. Какие факторы должны определять выбор между этими двумя вариантами?

результат тестирования: метод getBytes () занимает 1328 мс, а charset.encode () - 1804 мс

результат тестирования с помощью программы-примера

1 Ответ

0 голосов
/ 09 июля 2020
  1. Набор символов UTF_8 с использованием ArrayEncoder и getBytes() имеет быстрый путь для него.
  2. Charset.encode всегда оборачивает параметр как CharBuffer и вместо него возвращает ByteBuffer из byte[], и он использует кеш кодировщика. String.getBytes всегда создает новый CharsetEncoder и использует char[] для кодирования, а также имеет быстрый путь для ArrayEncoder.

Кроме того, ArrayEncoder также является кодировщиком быстрого пути для Кодирование от char[] до byte[].

Однако эту производительность не следует учитывать в большинстве приложений.

...