Насколько дорого стоит преобразование строкового кодирования в Java? - PullRequest
3 голосов
/ 22 апреля 2009

Мне было интересно, насколько дорогими являются алгоритмы преобразования строкового кодирования Java, скажем, для фрагмента текста в EBCDIC, который необходимо преобразовать в UTF-16 или для аналогичного преобразования большого файла. Существуют ли какие-либо критерии по стоимости этого преобразования? Тесты для нескольких кодировок были бы лучше.

Ответы [ 3 ]

3 голосов
/ 22 апреля 2009

Это алгоритм O (n). Время, которое требуется для выполнения, будет увеличиваться более или менее линейно с длиной строки, которую вы конвертируете (хотя, если вы конвертируете миллионы очень коротких строк, накладные расходы на вызовы функций добавятся к этому).

Почти во всех ситуациях это не будет узким местом. Вероятно, вы могли бы кодировать очень большие строки размером в несколько десятков мегабайт за незначительное время. У меня нет фактических данных о тестах.

1 голос
/ 22 апреля 2009

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

0 голосов
/ 12 февраля 2012

Это довольно незначительные накладные расходы - строковые алгоритмы Java в целом очень хороши и хорошо оптимизированы за эти годы.

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

...