rPansa
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору andreidar Цитата: интересно Добавлено: шутка | Поздно..)) Зря старался, что ли? Так что всё равно обьясню, вкратце и популярно, не вдаваясь в технические подробности Просто чтобы принцип стал ясен. 1. Каждая dll-библиотека (dynamic link library) имеет свой адрес загрузки в адресное пространство (base). Таблица адресов для вызовов функций из неё уже заполнена, в соответствии с этим адресом. 2. При загрузке в память по другому адресу (например, он уже другим чем занят, другой библиотекой, или плагином в случае Миранды) нужна корректировка с помощью служебной таблицы смещений. На это системой время тратится, при загрузке. Это первая неприятность. 3. Вторая неприятность. При загрузке запакованной dll (плагина) она затем распаковывается, тоже тратится время. Плюс размер в памяти -- больше, на размер распаковщика и буфер для распаковки. Эта память потом никак НЕ ИСПОЛЬЗУЕТСЯ, и не освобождается до выгрузки библиотеки (плагина) из памяти, вместе с программой. 4. После распаковки происходит настройка адресов, и хорошо, если адрес загрузки остался тем же, что у незапакованной библиотеки. Иначе -- см пп. №1 и №2. Выводы: I. Плагины для Миранды -- те же библиотеки, в принципе, у многих из них адреса загрузки + размеры не пересекаются. Если не использовать туеву хучу плагинов, Миранда должна загружаться быстро..)) II. Экономим место на диске -- теряем немного в скорости загрузки и в размере требуемой для работы памяти. Это -- "минус" к использованию всяких запаковщиков exe и dll. | Всего записей: 1312 | Зарегистр. 14-01-2005 | Отправлено: 11:23 10-10-2009 | Исправлено: rPansa, 11:45 10-10-2009 |
|