Учебник по созданию shareware программ

         

Размер имеет значение



Размер имеет значение

После прочтения разд. "Delphi, Basic или С" гл. 2, где я уделил повышенное внимание размеру исполняемых файлов, генерируемых компиляторами современных систем программирования, некоторые из читателей, возможно, решили, что я являюсь сторонником тотального минимализма и рекомендую оптимизировать каждый байт кода. Нет, это не так — затраты времени и сил на такую кропотливую работу могли окупиться разве что лет десять назад, когда ни один серьезный программист не мог обойтись без знания ассемблера, а 64 Кбайт (да, вы прочитали правильно, килобайтов, а не мегабайтов) оперативной памяти казались огромным пространством. Я считаю, что размер файла программы должен быть не минимальным, а адекватным ее возможностям, т. е. соответствовать набору функций, предоставляемых пользователю.

"Стоп!" - скажут опытные программисты. — Не имеет значения, каков размер файла программы, важно, каков размер данных, используемых программой!" Абсолютно верно. Программа, ЕХЕ-файл которой имеет объем, например, всего 300 Кбайт, будучи запущенной, займет в оперативной памяти в несколько раз больше места. Дополнительное пространство в памяти "отъедают" переменные и их массивы, используемые программой, но больше всего занятых ресурсов приходится на всевозможные DLL-библиотеки, ведь для реализации почти любой функциональной возможности у Windows заготовлена специальная DLL (табл. 4.1).

Все эти DLL совместно используются разными Windows-приложениями, и когда ваша программа запускается, чаще всего большинство нужных библиотек уже "сидят" в памяти. Именно поэтому стандартный Диспетчер задач в Windows NT и Windows 2000 показывает какие-то дикие цифры — по несколько мегабайтов занимаемой оперативной памяти на каждый запущенный процесс, в том числе и на крошечные вспомогательные утилиты.

Таблица 4.1. Назначение DLL-библиотек в Windows 2000



Назначение библиотеки

Название файла

Объем файла, Кбайт

Работа с системным реестром Windows

advapi32.dll

64

Элементы управления Windows 9x

comctl32.dll

564

Стандартные диалоги (Открыть файл, Печать т. п.)

comdlg32.dll

172

Поддержка мультимедиа

devcon32.dll

352

Графическая библиотека Windows

gdi32.dll

152

Функции ядра Windows

kernel32.dll

460

Поддержка MFC (для приложений на VC++)

mfc42.dll

972

Сетевые функции

mpr.dll

56

Менеджер аудиосжатия

msacm32.dll

100

Поддержка WebCheck

msidle.dll

28

Runtime-библиотека Visual C++

msvcrt.dll

260

Сетевые функции

netapi32.dll

20

Поддержка NT API

ntdll.dll

20

Поддержка ActiveX

ole32.dll oleaut32.dll

772 582

Поддержка RPC

rpcltc1.dll rpcrt4.dll

28 332

Функции оболочки Windows

shell32.dll

1368

Поддержка меню, окон и т. п.

user32.dll

68

Поддержка мультимедиа

winmm.dll

64

Однако для shareware размер именно файла программы, а особенно ее дистрибутива, имеет очень большое значение.

В первую очередь это обусловлено, конечно же, тем, что основной средой для распространения программ является Интернет. Несмотря на то, что пропускная способность каналов связи постоянно растет, около половины пользователей испытывают трудности с загрузкой файлов объемом более чем 1 Мбайт. Да-да, примерно 50% пользователей прекращают процесс закачки больших файлов, не дождавшись его завершения (по мере того, как увеличивается размер файла, который требуется загрузить, процент неудачных закачек, естественно, растет). Виной тому, конечно, не зловредность пользователей, а то, что многие из них не применяют специальные программы для загрузки файлов типа ReGet, GetRight, GolZilla и пр., а предпочитают скачивать даже многомегабайтовые файлы, просто щелкая мышью по ссылкам в браузере. Вследствие этого имеет смысл поместить на странице загрузки файла программы рекомендацию все-таки использовать down-load-менеджеры для закачки (Рисунок 4.1).



Содержание раздела