|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.06.2013, 12:55 | #11 | ||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Цитата:
В этом БОльшой минус по-блочной компиляции, нельзя установить взаимосвязи между модулями для выборки только используемого кода, ДО компиляции, а после компиляции этим занят линкер и же поздно Макс. оптимизация это вырезание не используемых Unit'ов из Uses, да и не всегда работает. Цитата:
С KOL & MCK ручкми не придется, но можете вообще забыть про компоненты/классы Delphi, тем более сторонние. Последний раз редактировалось Человек_Борща; 06.06.2013 в 13:01. |
||
12.01.2024, 22:57 | #12 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,834
|
в продолжении темы. столкнулся с тем, что сами модули Windows, Registry, SysUtils, Classes, TlHelp32 "тяжёлые", т.к. имеют внутри много процедур, функций и констант, а мне при работе надо лишь одну или несколько процедур.
При компиляции размер приложения оказывается "раздут", а при использовании урезанных модулей, размер значительно уменьшается. 500 Кб и 20 Кб - разница ощутима, хотя по быстродействию не сравнивал пока. Что там вообще за 480 кб вписывается в приложение? Есть какой-то софт, который "вытягивает" из модулей нужную информацию? или все по-старинке подключают модули в неизменном виде, не обращая внимание на размер приложения? А то вручную выискивать все зависимости и отсеивать лишнее - интересно, но муторно. модуль Classes пять дней мучил, чтоб классы TStream, TStringStream,TFileStream и ThandleStream оставить. -------- для примера, модуль Windows довёл вот до такой дистрофии, стараясь уменьшить размер приложения. Код:
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
Последний раз редактировалось NetSpace; 12.01.2024 в 23:06. |
13.01.2024, 02:19 | #13 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,894
|
Цитата:
Стандартные приложения от мелкомягкого офиса имеют размер от 1,5 до 27 МБ. И всё работает нормально. И никого это не раздражает. Так почему это раздражет вас? |
|
13.01.2024, 15:28 | #14 | |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
Цитата:
А вот SysUtils и Classes тяжелы, поскольку содержат в себе кучу инициализаций глобальных переменных экземплярами всяких служебных классов, — вне зависимости от того, используете вы их в программе или нет. Borland в своё время нежно заботилась о быдлопрограммистах, чтобы писать код им было легко и ненапряжно, как в Visual Basic. Глобальные переменные — наследие тех времен. SysUtils, помимо прочего, содержит также реализацию исключений, которые подключаются и начинают работать (в том числе перехватывать системные и аппаратные исключения) без вашего участия, просто по факту появления SysUtils в uses. Это, наверное, больше хорошо чем плохо, но добавляет лишние килобайты к exe-шнику. Исключения из SysUtils потом используют классы из Classes — тут уже никак. Облегченные модули, собственно, — по большей части удаление именно инициализаций глобальщины. Вообще, сам по себе компилятор Паскаля от Borland, будь то Turbo Pascal или Delphi, — оптимизирующий, еще с версии TP 4.0 умеющий компоновать только реально вызываемый код. Облегченные модули не давали бы выигрыша в размере, если бы было не так. Проблема именно в откровенно говняной архитектуре объектно-ориентированных модулей RTL и VCL, сводящей все возможности умной компоновки на нет. Человеческие ошибки лечатся только другим человеком, никакой автоматизированной процедуры исправления архитектуры пока не изобрели. Поэтому выход — делать облегченные модули самому или использовать готовые. |
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как подключить модуль? | Richik123 | Паскаль, Turbo Pascal, PascalABC.NET | 10 | 11.10.2012 17:05 |
Как подключить свой модуль? | Murman_men | Помощь студентам | 1 | 17.11.2011 06:25 |
Как подключить графический модуль в D7 | MyLastHit | Общие вопросы Delphi | 4 | 09.12.2010 16:52 |
Как подключить модуль в С# ? | vedro-compota | Общие вопросы .NET | 11 | 07.12.2010 19:33 |
Как подключить модуль??? | diliana | Общие вопросы Delphi | 3 | 29.05.2009 19:14 |