OSDev

для всех
Текущее время: 27 апр 2024, 22:54

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 142 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15  След.
Автор Сообщение
 Заголовок сообщения: Re: OS Dev и суровая действительность
СообщениеДобавлено: 22 дек 2011, 16:44 

Зарегистрирован: 04 май 2011, 18:13
Сообщения: 121
SII писал(а):
DX10 появился в 2007 году, если память не изменяет. Для ИТ-отрасли это очень давно. Так что тех, кто до сих пор ориентируется на DX9, можно смело называть некрофилами :) Конечно, требовать, чтобы у каждого было новейшее железо, просто глупо (у меня оно новейшее, но только потому, что моя побочная работа -- его тестировать; у 99,99999% пользователей такой возможности нет). Но вот ориентироваться в перспективных разработках на то, что давно уже не выпускается...


Согласен.

SII писал(а):
Это не мелочи, хотя и не очень большая проблема. А вот написать высокоэффективный транслятор, который реально оптимизирует сравнимо с хорошим ассемблерщиком...

А компилятор Си мне писать приходилось. Больше не хочу и не буду ни за какие деньги (ну, разве что под угрозой смертной казни). Вот Паскаля или там Ады -- это можно и даже нужно, если время будет.


А меня прет от этого

SII писал(а):
StasBaybak, в дополнение к предыдущему. При разработке под графические процессоры (неважно, разработке чего именно) необходимо учитывать вот ещё какой момент. По сути, ГП реализуют идеологию SIMD -- т.е. один поток инструкций и много потоков данных. На практике это означает, если в общих чертах, следующее.

Предположим, есть у нас некоторая программа (шейдер), обсчитывающая что-то там. Каждый поток (нить) этой программы работает со своей порцией данных (например, обсчитывает свой пиксель, если это пиксельный шейдер). Однако алгоритм работы остаётся один и тот же.

Далее, для запуска этой программы драйвер выделяет необходимые ресурсы, и в частности, распределяет программы по "процессорным блокам", после чего запускает на выполнение. Каждый такой крупный "блок" включает в свой состав одно устройство управления (оно считывает из памяти и декодирует команды, после чего вырабатывает управляющие сигналы для остальных блоков) и несколько арифметико-логических устройств (16, 32, 64 -- зависит от архитектуры ГП); кроме того, имеются вспомогательные блоки -- например, для чтения и записи памяти. Благодаря наличию множества АЛУ такой процессорный блок в каждый момент времени выполняет одну и ту же команду над несколькими группами данных, чем и достигается параллельная обработка (тот самый SIMD).

Но что происходит, если в потоке команд встречается условный переход? Понятное дело, что для одних потоков (нитей) условие может соблюдаться, а для других -- нет. Но ведь все АЛУ одного процессорного блока всегда выполняют одну и ту же команду! Поэтому здесь происходит следующее. Те потоки, для которых условие соблюдается, продолжают работать на этом же процессором блоке и дальше. А вот те, где условие не выполнено, своё выполнение на этом блоке прекращают: в дальнейшем вместо выполнения операций над данными в соответствии с командами программы для них выполняется одна и та же команда "нет операции" (блок управления запоминает, что для соответствующих потоков условие оказалось ложным, и просто не выдаёт управляющие сигналы на соответствующие АЛУ и блоки обращения к памяти). Чтобы продолжить выполнение этих ветвей (с ложным условием), требуется вмешательство драйвера. Он либо запускает их на выполнение на другом процессорном блоке с той точки, где оно было прекращено в связи с ложностью условия, либо дожидается окончания выполнения программы на текущем процессорном блоке и затем запускает его в работу над этими "ложными" потоками. Таким образом, любое ветвление приводит к ухудшению степени параллелизма, и в итоге может оказаться, что, хотя процессорный блок может одновременно работать над 16-32-64 потоками, он фактически выполняет лишь один поток, а остальные простаивают. Именно этим, кстати, объясняются разные результаты в тестах на ГП от Невидии и АМД: у АМД формально больше пиковая производительность, но его ГП намного сильней страдают от ветвлений. Поэтому на шейдерах, где ветвлений мало или нет вообще, АМДшные ГП показывают более хороший результат, чем Невидийные, ну а если там куча ветвлений -- то наоборот.

Эту особенность работы ГП требуется учитывать при создании любого ПО для него. В частности, хороший компилятор должен учитывать особенности реакции процессора на ветвления и стараться оптимизировать алгоритм таким образом, чтобы их было поменьше. А это, согласитесь, задача куда более сложная, чем тупо странслировать оператор присваивания.
!

Сдаюсь!!!

Не знал такого. Знал, что обработка идет паралельно, но чтоб так.
Спасибо за ценную информацию, пригодиться.

(Не натыкался на статьи, которые описывают столь подробно работу графического GPU)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Dev и суровая действительность
СообщениеДобавлено: 22 дек 2011, 16:53 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
SII писал(а):
Типичные задачи -- поиск подстроки в строке, вырезка части строки и т.д. В UTF-8 это решается сложней, чем в других кодировках, а заодно ухудшает производительность.

Поправочка-с... не сложней, чем в UTF-16 :) Поиск без регулярных выражений, кстати, работает без переделок. Большинство задач вообще должны решаться не пользователем, а системными библиотеками.

SII писал(а):
ну а определение положения символа для UTF-8 сложней, чем для UTF-16

Не сложней. Такая же сложность. Разница в алгоритмах совершенно непринципиальна и касается деталей.

SII писал(а):
В общем, насчёт кодировки я утверждаю, что UTF-8 -- сплошное говно, отстой и т.п., и им пользоваться не следует.

Ваше право :)
В любом случае при хранении текстовой информации у UTF-16 и UTF-32 нет преимуществ перед UTF-8, одни недостатки. Кстати, ещё один аргумент - любой валидный ASCI-текст автоматически является валидным UTF-8 текстом. С другими кодировками это не так. При обработке, согласен, в некоторых случаях UTF-32 может иметь преимущества. А UTF-16 - ни рыба, ни мясо. Г-но полное. Сочетает в себе недостатки 8 и 32-битной кодировки.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Dev и суровая действительность
СообщениеДобавлено: 22 дек 2011, 17:25 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Yoda писал(а):
Поправочка-с... не сложней, чем в UTF-16 :)


Либо так же, либо сложней, чем в UTF-16. Причина проста: у UTF-16 длина символа (2 или 4 байта) устанавливается путём анализа старшего байта, и всё (если там определённые коды, то имеет место быть суррогатная пара, и соответственно, общая длина символа -- 4 байта; все остальные случаи -- длина символа 2 байта). А вот в UTF-8 требуется последовательно анализировать байт за байтом до тех пор, пока не будет определена длина символа. Соответственно, такой анализ сложней и медленней.

Если ошибаюсь, поправьте, но, пожалуйста, с конкретникой: как что кодируется, а соответственно, как анализируется.

Цитата:
В любом случае при хранении текстовой информации у UTF-16 и UTF-32 нет преимуществ перед UTF-8, одни недостатки.


Неправда, а точней, полуправда. Если хранить тексты, нормально кодирующиеся в 7-битном ASCII -- то действительно, только недостатки. Однако если это текст на китайском, то в UTF-16 он займёт меньше места, чем в UTF-8, а в UTF-32 -- вероятно, столько же, но само декодирование UTF-16 проще (см. выше), а UTF-32 вообще в нём не нуждается. Так что Ваше утверждение слишком категорично, скажем для разнообразия культурно :)

Цитата:
Кстати, ещё один аргумент - любой валидный ASCI-текст автоматически является валидным UTF-8 текстом. С другими кодировками это не так. При обработке, согласен, в некоторых случаях UTF-32 может иметь преимущества. А UTF-16 - ни рыба, ни мясо. Г-но полное. Сочетает в себе недостатки 8 и 32-битной кодировки.


Опять-таки, слишком большая категоричность. Во-первых, допустимым текстом UTF-8 будет не любой допустимый ASCII, а любой, укладывающийся в "классический" 7-битный ASCII, а не в расширенный 8-битный. В частности ASCII-тексты на западноевропейских языках не будут допустимыми для UTF-8, поскольку там используется 8-разрядная кодировка (нужны дополнительные символы); про русский вообще молчу. Так что этот аргумент откровенно слабоват, если говорить про широкое применение ОС, где многоязыковая поддержка совершенно необходима.

Теперь что касается 16-разрядной кодировки. Её обработка, безусловно, сложней, чем 32-разрядной (требуется анализ на суррогатные пары), но она по-любому быстрей, чем для UTF-8 (см. про определение длины символа в самом начале), если нужна обработка на посимвольном уровне, а не просто в виде набора байтов. Так что применение UTF-16 может быть неплохим компромиссом между скоростью обработки и расходом памяти, особенно в современном мире, где часто используются символы, выходящие за пределы 128 кодов стандартного ASCII, а соответственно, кодируемые как минимум двумя байтами в UTF-8: в таком случае последний не имеет преимущества над UTF-16 по объёму занимаемой памяти, но проигрывает по скорости обработки из-за более долгого анализа длины символа. В то же время суррогатные пары, в отличие от кириллицы, дополнительных знаков западноевропейских языков, основных китайских, японских и корейских иероглифов и т.д. (кодируемых в UCS-2), используются очень редко, поэтому UTF-16 будет сильно (практически в два раза) выигрывать у UTF-32 по объёму памяти при меньшем замедлении обработки, если сравнивать с UTF-8 (а может, и вовсе без замедления, если основным тормозом будет не выполнение нескольких дополнительных команд процессора, а пропускная способность шины памяти).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Dev и суровая действительность
СообщениеДобавлено: 22 дек 2011, 17:35 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
StasBaybak писал(а):
Сдаюсь!!!

Не знал такого. Знал, что обработка идет паралельно, но чтоб так.
Спасибо за ценную информацию, пригодиться.

(Не натыкался на статьи, которые описывают столь подробно работу графического GPU)


А разве на ixbt не описывалось? Я-то сам разбирался по техническим презентациям, главным образом от Невидии, ну и плюс в общении с ихними инженерами кой-какие нюансы выяснялись... Кроме того, AMD в своё время открыла документацию на доставшиеся ей вместе с купленной АТИ графические процессоры -- это как раз первые ДХ10-совместимые были. Понятно, что современные отличаются от них, но общие идеи во многом те же самые (ДХ11 куда меньше внёс дополнительных требований к графическим процессорам по сравнению с ДХ10, чем ДХ10 по сравнению с ДХ9; более того, ту же тесселяцию можно делать и на процессоре, соответствующем требованиям ДХ10, но не ДХ11, просто это придётся программировать ручками, а работать оно будет много дольше, чем на ГП для ДХ11, поскольку не будет специализированной аппаратной поддержки).

Ну а вообще, если всерьёз интересуетесь графикой, завязывали б с некрофилией :) Она представляет несомненный исторический интерес, но ориентироваться надо всё ж на современность и перспективу...

Кстати, об Ogre. Я не знаток Си++ (не говоря о том, что я ненавижу все языки, пошедшие от Си, за их ужасный синтаксис и низкую надёжность), но, тем не менее, его исходники мною воспринимались без особых напрягов -- приходилось только спрашивать время от времени приятеля (работающего в игрострое и хорошо знающего Си++) про некоторые тонкие моменты ООП и тому подобные вещи. В то же время исходники компиляторя ФриПаскаля читать почти невозможно: написано абсолютно безобразно. Это лишний раз иллюстрирует, что исходный язык для восприятия важен (при прочих равных исходник на Паскале/Аде объективно легче воспринимается, чем исходник на Си и тем более на Си++), но ещё важней соблюдать хороший стиль программирования. Создатели Огра не злоупотребляют извращёнными возможностями Си++ -- и в результате его вполне можно понять, ну а создатели ФриПаскаля... Глядя на их труды, поневоле задумываешься о пользе абортов (и сожалеешь о невозможности предсказания целесообразности таковых, пока это не поздно).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Dev и суровая действительность
СообщениеДобавлено: 22 дек 2011, 18:31 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
SII писал(а):
Либо так же, либо сложней, чем в UTF-16. Причина проста: у UTF-16 длина символа (2 или 4 байта) устанавливается путём анализа старшего байта, и всё. (если там определённые коды, то имеет место быть суррогатная пара, и соответственно, общая длина символа -- 4 байта; все остальные случаи -- длина символа 2 байта). А вот в UTF-8 требуется последовательно анализировать байт за байтом до тех пор, пока не будет определена длина символа. Соответственно, такой анализ сложней и медленней.

Вы говорили про определение НАЧАЛА символа. Начало символа в UTF-8 определяется тоже предельно просто. Символы с кодами 0-7Fh - это цельный символ. В остальных случаях, если встретившийся код больше или равен 0C0h - это первый байт символа, независимо от его длины. Всё.

SII писал(а):
Неправда, а точней, полуправда. Если хранить тексты, нормально кодирующиеся в 7-битном ASCII -- то действительно, только недостатки.

ASCII - он всегда 7-битный. В противном случае это не ASCII, а, например, KOI-8 или ещё какая-нибудь хрень.

SII писал(а):
Однако если это текст на китайском, то в UTF-16 он займёт меньше места, чем в UTF-8

Хилое преимущество. Тут некоторые вообще предлагают на 32-бита перейти по закону Мура, а что там 3 байта вместо двух, уже не так важно :)

SII писал(а):
Так что Ваше утверждение слишком категорично, скажем для разнообразия культурно :)

Оооо! Какой прогресс! Я жму вашу руку! Наконец вы начинаете общаться в правильном ключе, - уважительно!! :)

SII писал(а):
Опять-таки, слишком большая категоричность. Во-первых, допустимым текстом UTF-8 будет не любой допустимый ASCII, а любой, укладывающийся в "классический" 7-битный ASCII, а не в расширенный 8-битный.

См. выше. Я про другие кодировки и не говорил.

SII писал(а):
Теперь что касается 16-разрядной кодировки. Её обработка, безусловно, сложней, чем 32-разрядной (требуется анализ на суррогатные пары), но она по-любому быстрей, чем для UTF-8 (см. про определение длины символа в самом начале)

Тэкс, теперь вы уже про ДЛИНУ символа говорите? ОК, это тоже определяется предельно просто. Длину символа СРАЗУ задаёт первый байт последовательности.

SII писал(а):
в современном мире, где часто используются символы, выходящие за пределы 128 кодов стандартного ASCII, а соответственно, кодируемые как минимум двумя байтами в UTF-8: в таком случае последний не имеет преимущества над UTF-16 по объёму занимаемой памяти, но проигрывает по скорости обработки из-за более долгого анализа длины символа.

Даже в русском языке полно пробелов, цифр, знаков препинания и прочих символах. Так что текст получается плотней. Это раз.
Хотите вы или нет, но UTF-16 тоже требует анализа на возможную длину символа, даже если суррогатные пары и не встречаются. Значит не выигрывает, или выигрыш получается весьма незначительным. Это два.

И наконец. Подавляющее большинство работы с текстом не предполагает его сложного анализа. 90% т.н. "работы с текстом" это - хранение текста в базах данных, поиск на прямое совпадение, сортировка строк, вывод сообщений, в крайнем случае с простым форматированием, обмен сообщениями и пр. мутотень, - ВСЁ это не отличается от обработки обычного ASCII-текста. В то время, как работа с 16 и 32-битными кодировками вынуждает делать вторую копию большинства системных функций для передачи параметра WCHAR*. Даже поиск начала символа и определение длины строки в символах - уже встречаются весьма не часто.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Dev и суровая действительность
СообщениеДобавлено: 22 дек 2011, 18:34 

Зарегистрирован: 04 май 2011, 18:13
Сообщения: 121
SII писал(а):
StasBaybak писал(а):
Сдаюсь!!!

Не знал такого. Знал, что обработка идет паралельно, но чтоб так.
Спасибо за ценную информацию, пригодиться.

(Не натыкался на статьи, которые описывают столь подробно работу графического GPU)


А разве на ixbt не описывалось? Я-то сам разбирался по техническим презентациям, главным образом от Невидии, ну и плюс в общении с ихними инженерами кой-какие нюансы выяснялись... Кроме того, AMD в своё время открыла документацию на доставшиеся ей вместе с купленной АТИ графические процессоры -- это как раз первые ДХ10-совместимые были. Понятно, что современные отличаются от них, но общие идеи во многом те же самые (ДХ11 куда меньше внёс дополнительных требований к графическим процессорам по сравнению с ДХ10, чем ДХ10 по сравнению с ДХ9; более того, ту же тесселяцию можно делать и на процессоре, соответствующем требованиям ДХ10, но не ДХ11, просто это придётся программировать ручками, а работать оно будет много дольше, чем на ГП для ДХ11, поскольку не будет специализированной аппаратной поддержки).

Ну а вообще, если всерьёз интересуетесь графикой, завязывали б с некрофилией :) Она представляет несомненный исторический интерес, но ориентироваться надо всё ж на современность и перспективу...

Кстати, об Ogre. Я не знаток Си++ (не говоря о том, что я ненавижу все языки, пошедшие от Си, за их ужасный синтаксис и низкую надёжность), но, тем не менее, его исходники мною воспринимались без особых напрягов -- приходилось только спрашивать время от времени приятеля (работающего в игрострое и хорошо знающего Си++) про некоторые тонкие моменты ООП и тому подобные вещи. В то же время исходники компиляторя ФриПаскаля читать почти невозможно: написано абсолютно безобразно. Это лишний раз иллюстрирует, что исходный язык для восприятия важен (при прочих равных исходник на Паскале/Аде объективно легче воспринимается, чем исходник на Си и тем более на Си++), но ещё важней соблюдать хороший стиль программирования. Создатели Огра не злоупотребляют извращёнными возможностями Си++ -- и в результате его вполне можно понять, ну а создатели ФриПаскаля... Глядя на их труды, поневоле задумываешься о пользе абортов (и сожалеешь о невозможности предсказания целесообразности таковых, пока это не поздно).


Я тоже многое ненавижу. Но долг зовет. Чтобы быть проффесионалом нужно терпеть, даже если это не нравиться.
Честно говоря на игрострой подзабил уже как год. В Харькове с этим туго. Разочаровался.
Старыми версиями увлекался еще потому что карточка старая была, да и оно интересно было: современные решения воплощать на старом оборудовании. Нужно продумывать все чательно. Но зато все оптимизировано.


Исправился, подписался на ixbt.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Dev и суровая действительность
СообщениеДобавлено: 22 дек 2011, 19:06 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Yoda писал(а):
Вы говорили про определение НАЧАЛА символа. Начало символа в UTF-8 определяется тоже предельно просто. Символы с кодами 0-7Fh - это цельный символ. В остальных случаях, если встретившийся код больше или равен 0C0h - это первый байт символа, независимо от его длины. Всё.


Ох и любите Вы передёргивать... Как определить положение начала символа, не проанализировав все предшествующие ему символы в строке? А ведь далеко не всегда интересует позиция первого символа (с ней-то всё понятно).

Цитата:
Оооо! Какой прогресс! Я жму вашу руку! Наконец вы начинаете общаться в правильном ключе, - уважительно!! :)


Ничего, выдадите какую-нибудь глупость, противоречащую фактам (а не моим убеждениям ;) ) -- сразу обзову как-нибудь :)

Цитата:
Тэкс, теперь вы уже про ДЛИНУ символа говорите? ОК, это тоже определяется предельно просто. Длину символа СРАЗУ задаёт первый байт последовательности.


А поподробней можно? У меня лично отложилось в голове, что по первому байту можно судить лишь о том, один байт в символе или более одного, но нельзя установить длину, если она больше 1.

Цитата:
Даже в русском языке полно пробелов, цифр, знаков препинания и прочих символах. Так что текст получается плотней. Это раз.
Хотите вы или нет, но UTF-16 тоже требует анализа на возможную длину символа, даже если суррогатные пары и не встречаются. Значит не выигрывает, или выигрыш получается весьма незначительным. Это два.


Только в том случае, если длину символа UTF-8 можно однозначно определить, проанализировав лишь первый байт. Если для этого требуется анализировать все байты, кроме последнего (а мне кажется, что именно так) -- тогда нет, обработка UTF-16 будет быстрей. Ну а экономия памяти... Она до тех пор будет, пока кодировка в UTF-8 не превышает в среднем двух байтов. Возможно, что кириллица и западноевропейские языки туда ещё впишутся, однако восточные языки -- уже однозначно нет (в то же время суррогатные пары тому же японскому не требуются вовсе, он полностью укладывается в UCS-2).

Цитата:
И наконец. Подавляющее большинство работы с текстом не предполагает его сложного анализа. 90% т.н. "работы с текстом" это - хранение текста в базах данных, поиск на прямое совпадение, сортировка строк, вывод сообщений, в крайнем случае с простым форматированием, обмен сообщениями и пр. мутотень, - ВСЁ это не отличается от обработки обычного ASCII-текста. В то время, как работа с 16 и 32-битными кодировками вынуждает делать вторую копию большинства системных функций для передачи параметра WCHAR*. Даже поиск начала символа и определение длины строки в символах - уже встречаются весьма не часто.


Не соглашусь. Например, работа любого текстового редактора или электронной таблицы во многом связана именно с посимвольной обработкой информации, причём не такой, которая решается без выделения каждого отдельного символа. Соответственно, надо постоянно определять положение каждого символа в строке и выполнять другие подобные операции, где переменная длина символа, особенно сложная для определения, откровенно мешает. Если памяти не дефицит, то, ИМХО, обработку в таких задачах надо вести вообще в UTF-32.

Ну и другой вопрос. У Вас, ИМХО, слишком расширенное понятие о системных функциях (ну или, если Вам угодно, у меня слишком зауженное) -- соответственно, Вы видите проблемы там, где их не вижу я. У меня графика, например, не относится к системным функциям вообще: система благополучно может существовать вообще без графики (специфика-с: на кой ляд мне графика в контроллере, обслуживающем датчики и общающимся с другими контроллерами по RS-232 или там CAN?).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Dev и суровая действительность
СообщениеДобавлено: 22 дек 2011, 19:09 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
StasBaybak писал(а):
Я тоже многое ненавижу. Но долг зовет. Чтобы быть проффесионалом нужно терпеть, даже если это не нравиться.


Ну, не совсем так. Профессиональный программист должен без особых проблем воспринимать не слишком сложную программу на Си++, а при необходимости со справочником быть в состоянии разобрать любую программу на оном языке -- это да, требование сегодняшнего дня, нравится это мне или нет. Но это отнюдь не означает, что профессионал обязан работать на Си++, знать его тонкости и т.д.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Dev и суровая действительность
СообщениеДобавлено: 22 дек 2011, 23:22 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
SII писал(а):
Цитата:
Тэкс, теперь вы уже про ДЛИНУ символа говорите? ОК, это тоже определяется предельно просто. Длину символа СРАЗУ задаёт первый байт последовательности.

А поподробней можно? У меня лично отложилось в голове, что по первому байту можно судить лишь о том, один байт в символе или более одного, но нельзя установить длину, если она больше 1.

Если первый байт - 110*****, в символе два байта.
Если первый байт - 1110****, в символе три байта.
Если первый байт - 11110***, в символе четыре байта.
Теоретически, возможны длины до 6 байт, однако стандарт определяет коды только с максимальным размером 4 байта.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Dev и суровая действительность
СообщениеДобавлено: 23 дек 2011, 00:18 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Yoda писал(а):
Если первый байт - 110*****, в символе два байта.
Если первый байт - 1110****, в символе три байта.
Если первый байт - 11110***, в символе четыре байта.
Теоретически, возможны длины до 6 байт, однако стандарт определяет коды только с максимальным размером 4 байта.


Значит, у меня шарики за ролики заехали, и я порол чушь :) Ну, чушь в плане определения длины символа -- что в UTF-8 может потребоваться просмотр нескольких байтов, а не только первого. Тогда определение длины действительно упрощается, хотя всё равно остаётся более сложным, чем для UTF-16, а в определённых случаях -- более длительным (у последнего, насколько помню -- или опять маразм? -- надо проверить на два значения; если код находится между ними, то это суррогатная пара, а если меньше-больше -- то нормальный 2-байтовый код символа).

Тем не менее, остаюсь при своём мнении: если для хранения данных на внешних носителях UTF-8 вполне целесообразен (а при отсутствии архивации даже наиболее выгоден), то для обработки лучше использовать UTF-32, а если жалко памяти -- UTF-16.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 142 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB