Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Преобразование char <-> byte

div.main {margin-left: 20pt; margin-right: 20pt}Преобразование char <-> byte

Многие программисты используют преобразования между различными типами данных в Java. А именно преобразование char и byte. Такие преобразования могут использоваться к примеру для передачи текстовых данных, через поток, конвертация кодировок или для каких-то еще целей.

Но не все знают, что такие преобразования могут происходить разное время. Причем разница может доходить до разов.

Для выснения более-менее ясной картины создан тест. В этом тесте производится перекодировка текстовой строки (находящейся в "нативной" Java кодировке Unicode) в одну из 8-и кодировок (Unicode, UTF16, UTF8, koi8-r, windows-1251, cp866, iso8859-1, ASCII). Конкретно, в начале производится перекодировка в одну из указанных кодировок, а затем обратно в Unicode. Каждая кодировка обрабатывается 100000 раз.

Посмотрим результаты - чем меньше значение, тем быстрее обрабатывался результат. Первое значение - получение массива байтов из строки, второе значение - получение строки из массива байтов полученного при генерации перовго результат. Обе процедуры используют одну из "кодировок" для конвертации.

Как видно из результатов, разница между кодированием туда и кодированием обратно может превышать разы. Коме того, разные кодировки требуют разного времени на обработку. В таблице одним цветом выделены результаты полученные на одном оборудовании.

Результаты
OS/Hardware JVM Unicode UTF16 UTF8 KOI8-r WIN-1251 CP866 ISO ASCII
- - 8531/484 6641/6546 516/484 6157/5875 6125/5766 6046/5797 6047/5844 360/265
- Sun HotSpot Client 1.4.0-beta 5007/361 3705/3786 1001/1102 3625/3505 3705/3596 3585/3455 3625/3525 12919/610
OS/2 JDK 1.1.8 IBM JIT 1781/1742 -/- 1554/1696 1883/1657 1774/1828 1594/1515 1930/1539 1633/1390
OS/2 J2RE 1.3.0 IBM 3945/547 2046/2024 500/547 1914/1711 1711/1743 1867/1687 1781/1711 367/282
WinNT4.0 sp6 Cel333/128 Sun 1.2.2 SymJIT 31795/26448 -/- 4737/5638 14091/15342 13499/14321 11426/11827 14531/14471 2433/2524
WinNT4.0 sp6 Cel333/128 Sun 1.2.2 JRE SymJIT 29232/23544 -/- 4577/3495 14260/15241 15102/13389 11397/11426 14421/13159 3695/2814
PenIII500/128 Sun 1.3.0 HotSpot Client 6029/300 4777/4707 391/340 4587/4436 4637/4406 4577/4406 4537/4356 260/180
PenIII500/128 J2RE 1.3.0 IBM Jitc 2994/371 1552/1743 430/441 1412/1302 1412/1302 1402/1261 1573/1272 310/210
PenIII500/128 MS JView 1.1.4 3916/3455 -/- 3355/3445 -/- 73716/72605 -/- -/- 2944/3004

 



  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2021
    Реклама на сайте