Преобразование символов из кодировки ASCII в Unicode

Преобразование символов из кодировки ASCII в Unicode

Измерения выполнялись для восьми программ, каждая из которых преобразовывала файл размером 12,8 Мбайт в файл размером 25,6 Мбайт. Соответствующие результаты представлены в табл. В.2.

1. Программа atou (программа 2.4) сопоставима с программой cpW, использующей буфер небольшого размера.

2. Программа atouSS — первый из "быстрых" вариантов реализации, основанных на программе atou. В нем применяются флаги последовательного режима обработки и буфер небольшого размера. Эта, а также две следующие программы сгенерированы на основе одного и того же проекта, atouLBSS, но с определением разных комбинаций макросов.

3. Программа atouLB использует буфер большого размера (8192 байта), но не использует флаги последовательного режима обработки.

4. Программа atouLSFP использует буфер большого размера и флаги последовательного режима обработки, но кроме этого предварительно устанавливает требуемый размер выходного файла. Эта мера продемонстрировала свою высокую эффективность.

5. Программа atouMM использует отображение файлов для операций файлового ввода/вывода и вызывает функции, листинг которых приведен в программе 5.3.

6. Программа atouMT представляет собой многопоточную реализацию приведенной в главе 14 программы, основанной на схеме множественной буферизации без применения асинхронного ввода/вывода.

7. Программа atouOV (программа 14.1) использует перекрывающийся ввод/вывод и не может выполняться на двух системах семейства Windows 9x.

8. Программа atouEX (программа 14.2) использует перекрывающийся ввод/вывод и не будет выполняться на двух системах семейства Windows 9x.

Комментарии

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

2. Предварительная установка размера выходного файла (atouLSFP) очень эффективна и приводит к резкому повышению производительности на всех однопроцессорных системах. В то же время, преимущества SMP-систем оказались весьма незначительными. Эту же методику можно было применить и в предыдущих примерах копирования файлов.

3. В этих примерах процессорное время составляет лишь незначительную долю общего времени.

4. Помимо того, что использование перекрывающегося ввода/вывода ограничивается системами Windows NT и его трудно программировать, он обеспечивает очень низкую производительность. Заметьте, что основная доля общего времени приходится не на пользовательское или системное время, а на реальное время. Создается впечатление, что в случае NT4 система испытывает трудности с планированием доступа к диску, и это препятствие нельзя было устранить путем изменения размера буфера (как большую, так и в меньшую сторону) до тех пор, пока не были использованы буферы размером 65 Кбайт. В NT5 эта проблема не возникает.

5. Ни расширенный ввод/вывод, ни многопоточный режим не обеспечивают сколько-нибудь заметного повышения производительности.

6. Использование отображения файлов в операциях ввода/вывода способно увеличивать производительность, обеспечивая ее повышение примерно на 30% по сравнению с остальными методами. Результаты для SMP-сервера оказались еще лучшими.

Таблица В.2. Показатели производительности программ преобразования символов из кодировки ASCII в Unicode

ЦП Pentium III Pentium III Pentium LT Celeron LT Xeon 4?Xeon
ОС W2000 W2000 W2000 XP W2000 W2000
Файловая система FAT NTFS NTFS NTFS NTFS NTFS
atou Реальное время 3,24 7,16 33,53 6,27 5,77 2,77
Пользовательское время 0,31 0,33 0,01 0,06 0,06 0,08
Системное время 0,46 0,72 3,55 0,54 0,63 0,63
atouSS Реальное время 3,77 6,21 43,53 10,12 5,68 2,48
Пользовательское время 0,20 0,23 0,11 0,07 0,04 0,14
Системное время 0,52 0,81 3,17 0,04 0,35 0,81
atouLB Реальное время 4,38 6,41 28,51 5,95 4,75 2,47
Пользовательское время 0,10 0,07 0,05 0,03 0,03 0,08
Системное время 0,26 0,34 0,63 0,19 0,21 0,187
atouLSFP Реальное время - - 5,17 1,38 1,28 2,03
Пользовательское время - - 0,07 0,05 0,09 0,06
Системное время - - 0,61 0,16 0,10 0,11
atouMM Реальное время 4,35 2,75 3,46 3,90 3,74 0,77
Пользовательское время 0,27 0,29 0,09 0,07 0,05 0,14
Системное время 0,19 0,19 0,16 0,14 0,10 0,09
atouMT Реальное время 4,84 6,18 5,83 6,61 5,99 3,55
Пользовательское время 0,14 0,15 0,26 0,04 0,06 0,02
Системное время 0,45 0,46 0,66 0,33 0,15 0,31
atouOV Реальное время 9,54 8,85 32,42 6,84 5,63 3,17
Пользовательское время 0,14 0,12 0,21 0,06 0,06 0,06
Системное время 0,24 0,23 0,42 0,18 0,21 0,17
atouEX Реальное время 5,67 5,92 30,65 6,50 5,19 2,64
Пользовательское время 1,10 1,50 0,29 0,35 0,41 0,64
Системное время 1,19 1,74 0,77 0,69 0,59 1,91
Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

9.3.2. Таблицы кодировки символов

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

9.3.2. Таблицы кодировки символов В человеческом мире информация представляется последовательностями символов. Каждый символ имеет каноническое изображение, которое позволяет однозначно идентифицировать данный символ. Шрифты задают разные варианты начертания


Стратегии использования символов Unicode

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Стратегии использования символов Unicode Приступая к работе над проектом в Windows, либо для разработки нового программного кода, либо для переноса существующего, программист, в зависимости от требований проекта, может выбрать одну из четырех стратегий.1. Только 8-битовые


Пример: преобразование символов из ASCII в Unicode

Из книги MySQL: руководство профессионала автора Паутов Алексей В

Пример: преобразование символов из ASCII в Unicode Программа 2.4 достраивает программу 1.3, в которой использовалась вспомогательная функция CopyFile. С копированием файлов вы уже знакомы, поэтому в данном примере эта операция дополняется преобразованием файла к кодировке Unicode в


10.9. Преобразование набора символов столбца

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

10.9. Преобразование набора символов столбца Чтобы преобразовывать двоичный или не двоичный строковый столбец, чтобы использовать специфический набор символов, примените ALTER TABLE. Для успешного преобразования одно из следующих условий должно примениться:Если столбец


10.10.1. Наборы символов Unicode

Из книги XSLT автора Хольцнер Стивен

10.10.1. Наборы символов Unicode MySQL имеет два набора символов Unicode. Вы можете сохранять текст приблизительно для 650 языков, используя эти наборы символов.Объединения ucs2 (UCS-2 Unicode):ucs2_bin ucs2_czech_ci ucs2_danish_ci ucs2_esperanto_ci ucs2_estonian_ci ucs2_general_ci (default) ucs2_hungarian_ci ucs2_icelandic_ci ucs2_latvian_ci ucs2_lithuanian_ci ucs2_persian_ci


2.15. Преобразование символов в коды ASCII и обратно

Из книги Технология XSLT автора Валиков Алексей Николаевич

2.15. Преобразование символов в коды ASCII и обратно В Ruby символ представляется целым числом. Это поведение изменится в версии 2.0, а возможно и раньше. В будущем предполагается хранить символы в виде односимвольных строк.str = "Martin"print str[0] # 77Если в конец строки дописывается


4.2. Кодировки в пост-ASCII мире

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

4.2. Кодировки в пост-ASCII мире «Век ASCII» прошел, хотя не все еще осознали этот факт. Многие допущения, которые программисты делали в прошлом, уже несправедливы. Нам необходимо новое мышление.Есть две идеи, которые, на мой взгляд, являются основополагающими, почти аксиомами.


4.2.3. Распознавание кодировки

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич


Установка кодировки символов

Из книги автора

Установка кодировки символов Для значительных переработок исходных документов важно знать, что можно устанавливать кодировку символов в результирующих документах при помощи атрибута encoding элемента <xsl:output>. Однако нет гарантии, что ваш процессор XSLT будет


Кодировки в XSLT-преобразованиях

Из книги автора

Кодировки в XSLT-преобразованиях Несмотря на то, что в логических деревьях, которыми манипулирует XSLT, текстовые узлы представляются в кодировке Unicode, очень часто в обрабатываемых документах бывает необходимо использовать также другие кодировки. К примеру, большинство


Определение класса символов и преобразование символов

Из книги автора

Определение класса символов и преобразование символов Функция Краткое описание isalnum проверка на букву или цифру isalpha проверка на букву isascii проверка на символ из набора кодировки ASCII iscntrl проверка на управляющий символ isdigit проверка на десятичную


Поддержка кодировки UNICODE

Из книги автора

Поддержка кодировки UNICODE Microsoft ODBC 3.5 определяет два типа драйверов - ANSI и UNICODE. Gemini ODBC-драйвер является по этой классификации драйвером UNICODE. Это дает возможность приложениям, использующим версию UNICODE интерфейса ODBC, обрабатывать данные различных национальных наборов