Страница: 1 |
Страница: 1 |
Вопрос: Ускорить запуск приложения
Добавлено: 19.04.05 18:09
Автор вопроса: Stef
Привет всем.
Может кто подскажет как ускорить запуск приложения, потому как после запуска приложения (после клика мышкой) до его старта (появление на экране) проходит около 30 секунд. Размер приложения 240кв
HEEEEELP.
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #1
Добавлено: 19.04.05 19:24
1) Дополнительное время занимает именно первый запуск (в связи с JIT компиляцией)
2) Если при запуске выполняются инициализационные процедуры, ничего не поделаешь. Единственное, что я бы посоветовал - вынести эти операции в отдельный поток, ну и показать сплешь-форму, по крайней мере негативное впечатления от длительного запуска снизится, хотя скорости запуску это не добавит.
3) Выкинуть на свалку металолом и поставить нормальную машину.
Номер ответа: 2
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #2
Добавлено: 19.04.05 19:24
Самый радикальный способ - купить новый (современный) комп, чтобы памяти побольше и процессор потолще.
Пустая .нет прога при запуске хапает 20 Мб памяти, а ты ещё наверняка всяких классов наподключал, что никак не уменьшает требований к памяти. Видимо твоей системе трудно выделить столько памяти для программы.
Номер ответа: 3
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #3
Добавлено: 19.04.05 19:55
Может сделать доп. прогу с прогресс баром? Может хоть и не ускорит, но так или иначе если его сделать красивым то пользователю будет пофиг скока прога будет грузиться(не совсем конечно, но зоть как то)
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 20.04.05 00:00
1. Сменить разработку с .НЕТ на что-то более-менее найтивное...
2. предложить Splash-Screen чтобы было не так скучно. По исследованиям - очень помогает...
Номер ответа: 5
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #5
Добавлено: 20.04.05 06:50
2cresta,
20 МБ она только резервирует, хотя реально использует не больше трех. И 20МБ будет соизмеряться с доступной памятью.
Номер ответа: 6
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #6
Добавлено: 20.04.05 11:27
cresta
угу, только на самом деле это пустоты, сверни приложение и увидишь
Номер ответа: 7
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #7
Добавлено: 20.04.05 11:33
Не буду столь голословным:
http://www.gotdotnet.ru/Forums/Windows/77935.aspx
http://www.gotdotnet.ru/DotNet/FAQ/CommonForum/524.aspx
Номер ответа: 8
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #8
Добавлено: 20.04.05 16:26
freeloader
Ты ошибаешься. Почитай msdn. Platform SDK: Memory Management. О том, что такое резервированая память, выделенная память.
Пример, приведенный тобой, и ссылки к выделению памяти отношения не имеет. Это первый момент.
Программа и после сворачивания также держит эти 20 Мб. Это второй момент.
Хочешь, на мыло скину прогу. От того же Артема. Посворачиваешь, поразворачиваешь, посмотришь на распределение памяти.
Номер ответа: 9
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #9
Добавлено: 20.04.05 16:48
Странно, я что то тогда понять не могу, что тогда получается, что все что там написано гольная ложь?
Ок, давай, в ответ я пришлю консоль, которая до применения АПИ в памяти 9 с лишним метров, а после 600 кб
Номер ответа: 10
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #10
Добавлено: 20.04.05 16:51
Кстати в Release она вообще 4.5 отъедает.
Номер ответа: 11
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #11
Добавлено: 20.04.05 18:08
Блин, я только вычистился от этого framework'a Не хочется опять загаживать комп.
Пример Артёма я те на мыло кинул. Там framework v2.0 нужен.
Не знаю, что там написано, ложь или нет, просто я вижу у себя такое. Может тут дело в версии framework'a ?
А про зарезервированную память - это совсем не то, что имеешь, когда сворачиваешь прогу. Пример:
Прога: (поиск файлов на винте) при запуске резервирую памяти 45 Мб(VirtualAlloc+MEM_RESERV). Из резервированного ничего не выделяется. В таскменеджере вижу распределение: для моей проги - 2,5 Мб. Далее запускаю поиск файлов - памяти пока нет, куда складывать список файлов - возникает ошибка обращения к недопустимому адресу(хотя этот кусок и зарезервирован). В обработчике этого исключения перевожу кусочек размером 4096 байт из состояния резервированного в состояние выделенного - и пишу теперь туда данные. И по мере роста кол-ва собранной информации постепенно перевожу в разряд выделенных новые кусочки по 4096 байт. Выделение памяти для проги в таскменеджере постепенно растет. К концу поиска выделяется примерно 16 Мб.
А затем, имея массив данных в 16 Мб, я сворачиваю прогу. Сколько выделения? 16 Мб, хотя менеджер показывает 240 кБ остается... Ведь мой массив никто не освободил. Разворачиваю прогу обратно - в менеджере 1,5 Мб. Данные не теряются, они где-то в неактивной части, может в файле подкачки. Начинаю тягать скролбар листа, прокручивая список - тут память резко нарастает до тех 16 Мб. Такой механизм. А в случае с .net эта цифра стоит колом на отметке 20 Мб в любом раскладе
При том, что она простейшая, всего нарисовать круг, да залить форму градиентом.
Выделенная - это одно, зарезервированная - совсем другое, а при сворачивании - это вообще отдельная песня.
У меня тот пример, что кинул тебе, запускается (если процессов мало) 5-6 сек. Если открыто много приложений и памяти дефицит, то запуск растягивается на 10 сек. Нужно время, чтобы найти и освободить для вновь запускаемого приложения 20 Мб.
Номер ответа: 12
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #12
Добавлено: 21.04.05 16:23
2cresta
Программа запускается за 2 секунды.
В таскмендежер после прорисовки круга занимает 15881 кб, после сворачивания 876 кб.
Cel 2.6 GHz, 512 MBRam - с памятью как видишь проблем вообще никаких
Ту тенденцию которую написал(заметил) ты, заметил и я, если уже посмотрел консольное приложение, при появлении новой строки память возврастает на 24 КБ а то и больше.
А вообще для современных машин я не считаю, что это большая проблема... Например у всего моего дружеского окружения стоят процы не ниже 2GHz и 256 мб ОЗУ
мне так не кажется... хотя может и в нем дело.
Номер ответа: 13
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #13
Добавлено: 21.04.05 16:39
Кстати cresta интерестно почему же такая технология ни как не проходит на VB и VC++???
{http://www.webfile.ru/269374}
Номер ответа: 14
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #14
Добавлено: 21.04.05 17:18
Во многих организациях до сих пор работают на 486 DX33. Например в нашей.
PS
Организация не самая бедная. Далеко не самая.
Номер ответа: 15
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #15
Добавлено: 21.04.05 17:34
freeloader, сворачивание окна в данном топике вообще не к месту. При запуске проге выделяется память в живом озу. Если свободного озу мало - начинается "выпихивание" остальных прог из озу. Их память (как неактивных на данный момент) перемещается в файл подкачки. На это и нужно время. В случае автора вопроса - 30 сек.
Чем меньше свободного озу и чем больше нужно для вновь запускаемой, тем больше приложений надо пнуть в файл подкачки. Вот и всё объяснение этим 30 секундам.