Заставить Windows кешировать исполняемые файлы без их запуска?

1299
Josh

Есть ли способ заставить Windows предварительно загрузить определенные двоичные файлы EXE / DLL в свой кэш предварительной выборки / суперзагрузки, как если бы они были выполнены? У меня есть определенное приложение, которое загружается довольно медленно при первом запуске, но если оно «теплое» (недавно выполненное), оно запускается довольно быстро. Я хотел бы заполнить кэш в фоновом режиме, прежде чем приложение будет необходимо. Но так как он показывает пользовательский интерфейс, я ищу способ сделать это молча. Так что просто запускать приложение не идеально.

Заранее спасибо.


По предложению Дэвида в комментариях я написал сценарий PowerShell для отображения в памяти файлов, поиска до конца и закрытия их. Я еще не проводил никаких контролируемых тестов, и это могло быть только моим воображением, но Sublime Text (рассматриваемое приложение) на этот раз загружался намного быстрее, и я не использовал его в течение нескольких часов.

2
Просто никогда не выключайте свою машину. martineau 11 лет назад 1
Да, prefetch / superfetch не работает таким образом, но спасибо. Josh 11 лет назад 0
Кстати, никогда не выключайте его, не означает, что вы не можете перевести его в режим сна / ожидания или режим гибернации. martineau 11 лет назад 0
Хранение машины не сохраняет бинарные файлы в кеше. Если они не используются, они будут быстро удалены из памяти при запуске других приложений. Я, вероятно, в конечном итоге придется идти с ramdisk & copy при загрузке. BLEH. Josh 11 лет назад 0
Вы бы написали программу, которая открывает эти файлы, отображает их в памяти и периодически читает из отображений. David Schwartz 11 лет назад 1
Спасибо за предложение, Дэвид. Я сделаю это. Имеет ли значение, если я использую доступ на чтение против чтения / выполнения (хотя я на самом деле ничего не буду выполнять). Josh 11 лет назад 0

1 ответ на вопрос

0
Scott

Check the documentation for your program (or just experiment with it; e.g., from a Command Prompt).  See whether there’s anything you can put on the command line that will cause it to exit immediately.  If it displays the GUI even in this mode, run it from a shortcut that has the “Run” control set to “Minimized”:

                                shortcut properties window with Run = Minimized circled

Another approach is to write a batch file that starts your program minimized (with START /MIN), waits a few seconds, and then kills it.

К сожалению, нет аргумента командной строки, чтобы запустить его без графического интерфейса или заставить его завершиться немедленно. Конечно, я могу запустить его с PowerShell, затем поспать секунду, а затем убить его, но это было бы разрушительным. Кроме того, возможность запуска в свернутом виде - это просто предложение для приложения, которое, к сожалению, не учитывается. Josh 11 лет назад 0