Какое влияние (если таковое имеется) оказывает переход Delphi 2009 на Unicode (/ UTF16) на размер исполняемого файла и объем памяти? - PullRequest
2 голосов
/ 17 сентября 2008

Вот один из отдела "Без вопросов, слишком глуп":

Ну, как говорит субъект: есть ли влияние? Если да, то сколько? Будут ли все строковые литералы, которые есть в моем коде и в моих ресурсах DFM, теперь занимать вдвое больше места внутри скомпилированных двоичных файлов? Как насчет использования памяти во время выполнения скомпилированных приложений? Будут ли все строковые переменные занимать вдвое больше оперативной памяти? Должен ли я вообще беспокоиться?

Я помню что-то подобное, когда меня спрашивали во время одной из ранних предварительных веб-трансляций, но я не могу вспомнить ответ. И поскольку пробная версия длится всего 14 дней, я не собираюсь пробовать ее сам до того, как необходимые мне сторонние библиотеки будут обновлены (предположительно, примерно через месяц).

Ответы [ 4 ]

1 голос
/ 17 сентября 2008

D2009 использует UTF-16 для типа строки по умолчанию, хотя вы можете сделать переменные UTF-8, если вам нужно.

Ян Гойваертс обсуждает соотношение размера и скорости в хорошем сообщении в блоге.

Строковые литералы в DFM были UTF-8, по крайней мере, с D7. Следовательно, не будет увеличения размера из-за строк в DFM с D2009.

0 голосов
/ 06 декабря 2008

Я наконец-то получил в свои руки Delphi 2009, и после внесения необходимых корректировок мой проект теперь компилируется и работает нормально. :)

Чтобы быстро получить результаты, мне сначала пришлось закомментировать один немного более сложный модуль приложения, так что он еще не на 100% сопоставим, но он уже кажется достаточно безопасным, чтобы предсказать это, несмотря на значительное количество строковых литералов в нашем исходном коде (чрезмерное сообщения журнала отладки) размер двоичного файла, скомпилированного с Delphi 2009, вероятно, будет примерно таким же, как и раньше - если не на самом деле меньше!

Интересно, действительно ли компилятор Delphi выполняет какое-либо сжатие двоичных файлов или, по крайней мере, его разделов ресурсов каким-либо образом? Я действительно ожидал бы, что изменение строковых литералов UTF-16 окажет большее влияние в этом конкретном приложении. Действительно ли литералы хранятся как (несжатый) UTF-16 внутри двоичного файла?

У меня еще не было времени исследовать различия в объеме памяти.

РЕДАКТИРОВАТЬ: Не связано непосредственно с Unicode, но определенно связано: Андреас Хаусладен недавно опубликовал интересную информацию о (значительном) влиянии параметра компилятора {$STRINGCHECKS} (BTW: включен по умолчанию) на скомпилированный исполняемый размер: http://andy.jgknet.de/blog/?p=487

0 голосов
/ 17 сентября 2008

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

Вопросы юзабилити более взвешены, чтобы максимально оправдать использование Юникода.

Если какой-то разработчик хочет создать крошечные exe-файлы, он может вручную оптимизировать их с помощью AnsiString (если i18n не является проблемой).

0 голосов
/ 17 сентября 2008

Я не пользовался Delphi годами, но, вероятно, это зависит от того, какую кодировку Unicode они используют. UTF8 будет точно таким же для обычного набора символов ASCII (он использует более одного байта, когда вы попадаете в экзотические символы). UTF16 может быть немного раздутым.

...