Сравнение холодного запуска к горячему запуску

Попробуйте JScrambler . Я недавно дал ему отклик и был впечатлен им. Он предоставляет набор шаблонов для обфускации с предопределенными настройками для тех, кто не заботится о деталях и просто хочет быстро это сделать. Вы также можете создавать пользовательскую обфускацию, выбирая любые преобразования / методы, которые вы хотите.

12
задан Motti 24 September 2008 в 13:32
поделиться

10 ответов

Как Вы представляли свой код? Не все профильные методы равны, и некоторые находят горячие точки лучше, чем другие. Вы загружаете много файлов? Если так, дисковая фрагментация и время поиска могла бы сыграть роль.

Возможно, даже засовывание основной информации синхронизации в код, выписывание к файлу журнала и исследование файлов на холоде/горячем запуске помогут определить, где приложение проводит время.

Без большей информации я склонился бы к файловой системе/дисковому кэшу как к вероятному различию между этими двумя средами. Если это так, затем или необходимо потратить файлы загрузки меньшего количества времени заранее или найти более быстрые способы загрузить файлы.

Пример: если Вы загружаете много файлов двоичных данных, ускоряете загрузку путем объединения их в единственный файл, то сделайте slerp целого файла в память в одном чтении и проанализируйте их содержание. Меньше поиска на диске и время тратит прочитывание диска. Снова, возможно, это не применяется.

Я не знаю бесцеремонно ни о каких инструментах для очистки кэша диска/файловой системы, но Вы могли записать быстрое приложение для прочитывания набора несвязанных файлов диска, чтобы заставить файловую систему/дисковый кэш быть загруженной другой информацией.

3
ответ дан 2 December 2019 в 18:22
поделиться

Что касается моделирования перезагрузок, Вы рассмотрели запущение Вашего приложения от виртуального ПК? Используя виртуализацию можно удобно копировать ряд условий много раз.

Я также полагал бы, что некоторый тип профильного приложения определяет бит кода, вызывающего задержку и затем делающего личный выбор о том, сколько из того кода действительно необходимо, или если это могло бы быть достигнуто по-другому.

6
ответ дан 2 December 2019 в 18:22
поделиться

Было бы трудно действительно моделировать перезагрузку в программном обеспечении. То, когда Вы перезагружаете, все устройства в Вашей машине утверждали свой сброс, укусило, который должен заставить всю память в масштабе всей системы быть потерянной.

В современной машине у Вас есть память и кэши везде: существует подсистема VM, которая хранит страницы памяти для программы, затем у Вас есть ОС, кэширующая содержание файлов в памяти, затем у Вас есть дисковый буфер секторов на самом жестком диске. Можно ли, вероятно, заставить кэши ОС быть сброшенными, но дисковый буфер на диске? Я не знаю о пути.

4
ответ дан 2 December 2019 в 18:22
поделиться

Один успешный способ ускорить запуск приложения состоит в том, чтобы переключить DLLs на загрузку задержки. Это - недорогое изменение (некоторая игра с настройками проекта), но может сделать запуск значительно быстрее. Впоследствии, выполните depends.exe в профильном режиме для выяснения, какие DLLs загружаются во время запуска так или иначе и возвращаются загрузка задержки на них. Помните, что Вы можете также загрузка задержки большая часть Windows DLLs, в котором Вы нуждаетесь.

2
ответ дан 2 December 2019 в 18:22
поделиться

@Morten Christiansen сказал:

Один способ заставить приложения запустить холодный запуск быстрее (вид) используется, например, читатель Adobe, путем загрузки некоторых файлов на запуске, таким образом, сокрытия "холодного" запуска от пользователей. Это только применимо, если программа, как предполагается, сразу не запускает.

Это заставляет клиента заплатить за инициализацию нашего приложения при каждой начальной загрузке, даже когда это не используется, мне действительно не нравится та опция (ни один не делает Raymond).

2
ответ дан 2 December 2019 в 18:22
поделиться

Как альтернатива функциональному списку заказов, просто сгруппируйте код, который назовут в тех же разделах:

#pragma code_seg(".startUp")
 //...
#pragma code_seg

#pragma data_seg(".startUp")
 //...
#pragma data_seg

Должно быть легко поддержать, когда Ваш код изменяется, но обладает тем же преимуществом как функциональный список заказов.

Я не уверен, может ли функциональный список заказов указать глобальные переменные также, но использовать этот #pragma data_seg, просто работал бы.

1
ответ дан 2 December 2019 в 18:22
поделиться

Один способ заставить приложения запустить холодный запуск быстрее (вид) используется, например, читатель Adobe, путем загрузки некоторых файлов на запуске, таким образом, сокрытия "холодного" запуска от пользователей. Это только применимо, если программа, как предполагается, сразу не запускает.

Другое примечание, то, что.NET 3.5SP1, предположительно, очень улучшила скорость холодного запуска, хотя, сколько, я не могу сказать.

0
ответ дан 2 December 2019 в 18:22
поделиться

Очень эффективная техника для улучшения времени запуска холода приложения оптимизирует функциональное упорядочивание ссылки.

Компоновщик Visual Studio позволяет Вам передать в списки файлов все функции в связываемом модуле (или просто некоторые из них - это не должны быть все они), и компоновщик поместит те функции друг рядом с другом в памяти.

Когда Ваше приложение запускает, обычно существуют вызовы к функциям init всюду по Вашему приложению. Многие из этих вызовов будут к странице, которая еще не находится в памяти, приводя к отсутствию страницы и поиску на диске. Это - то, куда медленный запуск прибывает из.

При оптимизации приложения, таким образом, все эти функции, вместе может быть большая победа.

Профиль выезда Ведомая Оптимизация в Visual Studio 2005 или позже. Одна из вещи sthat PGO делает для Вас, функциональное упорядочивание ссылки.

Немного трудно работать в процесс сборки, потому что с PGO необходимо связать, запустить приложение и затем повторно связаться с выводом от выполненного профиля. Это означает Ваши потребности процесса сборки иметь среду выполнения и соглашение, моющееся после плохих сборок и всего этого, но выплата обычно равняется 10 + или больше быстрее холодный запуск без изменений кода.

Существует еще некоторая информация о PGO здесь:

http://msdn.microsoft.com/en-us/library/e7k32f4k.aspx

2
ответ дан 2 December 2019 в 18:22
поделиться

Это мог быть NICs (платы LAN) и что Ваше приложение зависит от определенных других сервисов, которые требуют, чтобы сеть подошла. Так профилирование одного только Вашего приложения может не совсем сказать Вам это, но необходимо исследовать зависимости на приложение.

0
ответ дан 2 December 2019 в 18:22
поделиться

Если Ваше приложение не очень сложно, можно просто скопировать все исполняемые файлы в другой каталог, это должно быть подобно перезагрузке. (Вырезанный и вставленный кажется не, работают, Windows достаточно умен, чтобы знать, что перемещение файлов к другой папке кэшируется в памяти),

0
ответ дан 2 December 2019 в 18:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: