Что нового

Иконки в диалоге и скорость запуска скрипта

gora

Знающий
Сообщения
315
Репутация
19
Скрипт при старте рисует свой диалог в котором есть около десятка иконок. Для уменьшения размеров скрипта иконки не находятся в скомпилированном скрипте, а берутся из разных системных файлов.
Значит при запуске скрипта он будет читать с диска все эти системные файлы, загружать их в память, считывать из них указанные иконки и рисовать диалог.
Конечно некоторые из этих системных файлов могут быть уже в памяти и тогда процесс немного ускорится, но в самом неблагоприятном случае все их придется читать при каждом запуске скрипта.
Может я ошибаюсь и все будет не так страшно...
1 Сильно ли может этот процесс затормозить запуск?
2 Может наплевать на экономию этих нескольких килобайт и включить нужные иконки в скрипт и выиграть во времени запуска?
3 Что происходит с загруженными в память, ради иконок, системными файлами? Они удаляются сразу после извлечения иконки, продолжают висеть в памяти до завершения работы скрипта или остаются в ней и после, до тех пор пока система сама их не удалит из памяти?

Спасибо.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,487
Советую пойти по стопам второго варианта, я раньше тоже заморачивался по этому поводу, но в наши дни это уже не актуально.
И выигрыш не только в скорости (хотя это ещё под вопросом), а ещё и в том, что иконки всегда будут на месте, даже если запуск будет на разных системах.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
gora,
Я экспериментировал как-то с системными иконками и, в итоге, пришел к тому, что все нужные мне иконки внедряю в скрипт. Причин много: XP и 7 разные и индексы, и иконки, куча украшалок с заменой системных иконок, и тд, и тп...
Одна иконка увеличивает размер ~ на 1 кб, ИМХО, не критично.
Это мое, субъективное мнение.
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Есть один вариант, как сделать размер иконки меньше:

Почти всегда 1 значок имеет в себе несколько групп, точнее несколько размеров (16x16, 32x32, 48x48 и т.д...) и качества цветопередачи (4 бита, 8 бит, 16, 32). Так вот, Вам для работы обычно нужен 1 (ну максимум 2, мне обычно нужны 16x16 и 32x32) размер и скорее всего качество 32 бита (не думаю, что Вы пользуетесь качеством в 4 бита).

1. Открываете иконку через Paint.NET (у меня версия 3.36)
2. Выбираете опции иконки (я обычно выбираю: "32x32, 32-bit", если это возможно)
3. Жмете "Сохранить"
4. Выбираете, под какими параметрами Вам нужно сохранить значок (я обычно нажимаю "Select None" и снова в выбираю "32x32, 32-bit"
5. Жмете ОК и закрываете Paint.NET, готово.

У меня в примере получилось уменьшить размер иконки (в архиве 1.ico) с 24,0 КБ до 8,00 КБ (в архиве 0.ico). Конечно не так уж и много, но для некоторых случаев это необходимо...
 
Автор
G

gora

Знающий
Сообщения
315
Репутация
19
Всем спасибо. Доводы в пользу включения иконок в скрипт мне известны. Вырезать, нужные мне по размеру и разрядности, иконки я тоже умею.
Меня интересует несколько другой аспект этого вопроса, а именно время запуска файла, а также загрузка RAM "посторонним мусором".
Говорить о том, что это несколько МБ и при современных RAM значения не имеет, не надо. Иногда очень даже имеет, особенно фрагментированность RAM.
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
gora
Какими функциями загружается иконка? Если возвращается дескриптор иконки (или ImageList), то это уже отдельная копия иконки.
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
Подозреваю, что делается копия иконки. Можно проверить по размеру процесса. Думаю все ресурсы задействованные процессом причисляются к размеру процесса.
 
Верх