Как Вы поддерживаете Microsoft Excel в рабочем состоянии в полной скорости, даже когда это не имеет фокуса окна?

Я заметил, что, когда Excel 2007 (и вероятно более ранние версии) имеет фокус окна, выполнения Excel в полной скорости, что означает, что файлы открывают быстрые и продолжительные макросы VBA, выполняются быстро.

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

Там какой-либо путь состоит в том, чтобы поддержать приоритет Excel на высоком уровне независимо от того, фокусируется ли он или нет?

Я знаю, что мог повысить приоритет потока искусственно через Диспетчер задач, но я не уверен, какие цепные реакции это могло бы иметь для моих электронных таблиц или ОС.

Моя система является быстрым Двухъядерным с 4 ГБ RAM и выполняет Vista 64.

РЕДАКТИРОВАНИЕ ДЛЯ РАЗЪЯСНЕНИЯ:

Моя проблема не просто о повышении приоритета процесса Excel через Диспетчер задач, потому что это только влияет на Excel, когда это имеет фокус окна.

Точка - то, что происходит, когда Excel теряет фокус окна.

От использования Excel экстенсивно, кажется, что дизайном это сознательно понижает свой собственный приоритет процесса, когда окно Excel не фокусируется.

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

В нормальном использовании Excel (вероятно, 99% из всех использующих его), Вы не заметили бы этот эффект, но с крупной электронной таблицей (приблизительно 2 000 рабочих листов, я думаю), и сложные Макросы VBA, которые занимают несколько минут для выполнения, эффект очень примечателен.

Идеально, мне нужен он для хранения того же приоритета потока независимо от того, фокусируется ли окно Excel.

До сих пор я просто расслаблялся от компьютера в течение нескольких минут во время обработки так, чтобы я случайно не нажимал от окна Excel, когда это уплотняет далеко, но я просто надеялся, что было лучшее решение..., возможно, взлом реестра некоторого вида?

Править:

Я только когда-либо находил еще одно упоминание об этой проблеме о сети в этой ссылке

Это - соответствующая кавычка...

Однако, если я делаю окно Excel 2000 видимым пользователю и также сохраняю окно в фокусе, макросы выполняются с их ожидаемой скоростью. Снова, окно должно сфокусироваться, или макрос замедляется к проверке снова.

10
задан 17.07.2009, 21:16

5 ответов

Я не думаю, что существует проблема с изменением приоритета процесса Excel к Вышеупомянутому, Нормальному в Вашем случае. Это не должна быть проблема.

Не делайте это самым высоким, где это будет конкурировать с системными процессами.
Не приостанавливайте его, или можно было приостановить другие вещи на нем!


Если Вы используете Проводник Процесса Mark Russinovich
смотреть на приоритеты процессов, работающих на Вашей системе.
Это показывает следующие приоритетные значения и их ассоциацию.

24 Realtime
13 High         : procexp.exe itself is here, with winlogon, csrss
11              : smss is actually at 11
10 Above Normal :
 9              : lsass, services.exe are here
 8 Normal       : Most things are here
 6 Below Normal
 4 Idle

Вы могли использовать проводник процесса и попробовать некоторое изменение приоритетов за Excel.
Переместите его выше 8, но не идите вне 12
Выше Нормального в 10 должен сделать, я ожидаю.

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

4
ответ дан 07.12.2019, 12:48
  • 1
    Но приоритет все еще отбросит, когда Excel не будет иметь фокуса, не так ли?... только к немного более высокому приоритетному уровню, чем прежде, я предполагаю. Вы знаете, как сохранить приоритет потока последовательным независимо от фокуса окна? – Joe Schmoe 17.07.2009, 10:54
  • 2
    I am поиск этой детали, но моего понимания состоит в том, что окно в фокусе обычно будет в Normal приоритет (по умолчанию) и после того как Вы перемещаетесь Excel кому: Above Normal приоритет, это должно работать в более высоком приоритете, чем сфокусированное окно. Но, в более низком приоритете затем системные процессы - который является, где Вы хотите, чтобы он был. – nik 17.07.2009, 11:35
  • 3
    Если я не неправильно понимаю то, что Вы говорите, Ваша импликация - то, что можно повысить приоритет процесса Excel, и это останется в том приоритете все время. Но от использования Excel экстенсивно, я могу сказать с некоторой уверенностью, что это не делает этого. Кажется ДИЗАЙНОМ, что это понижает свой собственный приоритет, когда окно Excel не фокусируется. Установка более высокого приоритета для процесса Excel не мешает этому произойти - это только отдает Excel более высокий приоритет процесса, когда это имеет фокус, но это все еще опускается существенно, когда это теряет фокус. Только что запустили тест для подтверждения этого. – Joe Schmoe 17.07.2009, 13:14
  • 4
    я удивлен. Хотя, я не использовал эту технику для повышения приоритетов процесса (только для понижения их). – nik 17.07.2009, 13:37
  • 5
    я добавил еще некоторую информацию к вопросу выделить это преднамеренное понижение процесса, которое, кажется, продолжается. Идеально, был бы некоторый взлом реестра, который остановит этот случай. – Joe Schmoe 17.07.2009, 13:40

Нет никакой проблемы с увеличением приоритета процесса к "выше нормального" или "высоко", просто не устанавливайте его на "в реальном времени". Не может помочь Вам с Excel конкретно извините.

1
ответ дан 07.12.2019, 12:48

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

Единственная страница на MSDN, которого я мог найти об этом с быстрым поиском, является Приоритетными Повышениями:

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

Из того, что я услышал, существуют способы отключить то приоритетное повышение.

1
ответ дан 07.12.2019, 12:48
  • 1
    И цифродробилки как задачи BOINC, выполненные в низком приоритете в фоновом режиме все же, в полной мере пользуются доступной запасной способностью ЦП. Карлик – Alistair Knock 30.10.2009, 15:34

Выпуски несервера Windows, по умолчанию, обеспечивают, приоритет повышают к приоритетному процессу. При продвижении Excel к фону он терпит неудачу на повышении, он ранее имел быть на переднем плане; некоторая другая программа вместо этого получает приоритетное повышение.

Можно изменить настройки так, чтобы программы больше не получали это повышение.Примечание: Это не будет влиять просто на Excel, но любую программу, которая иначе имела бы право на повышение.

Вот то, как настроить установку в Windows XP:

  1. Щелкните правой кнопкой по My Computer.
  2. Выберите Properties.
  3. Нажмите Вкладку "Дополнительно".
  4. В панели Performance нажмите кнопку Settings.
  5. Нажмите Вкладку "Дополнительно". Первая панель является Планированием Процессора:

    Processor Scheduling panel

  6. Измените его от значения по умолчанию "Программ" к "Фоновым сервисам", и это должно заставить Excel вести себя ближе к способу, которым Вы хотите, когда это в фоновом режиме.

6
ответ дан 07.12.2019, 12:48

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

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

start "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office12\EXCEL.EXE"

(на версии на 64 бита Windows это было бы start "high priority excel" /max /high "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE" если Вы также не выполняете версию на 64 бита Office, который только доступен на 2010 вперед start "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE") Обратите внимание, что заголовок для окна может быть чем-либо, что Вы любите, но не является дополнительным.

Теперь сохраните это как, например, HiperExcel.cmd, где-нибудь удобный - возможно, офисная папка, или папка c:\scripts или somesuch или Ваша домашняя папка, таким образом, это может переместиться машина формы к машине. Создайте новый ярлык, который указывает на этот файл, сделайте папку запуска папкой, где файл сохранен. Выберите значок для файла - обзор к исполняемому файлу Excel.exe затем выбирает что-то другое, чем обычный значок Excel для ясности.

Нажмите свой новый ярлык, и он вызовет Excel, работающий как высокоприоритетный процесс с базовым приоритетом 13 и когда выполнение его, вероятно, получит максимальный приоритет для процессов нев реальном времени 15. Даже если что-то еще получает повышение, это не должно получать более высокий приоритет. Обратите внимание, что приоритетный процесс НЕ получает повышение приоритета только для того, чтобы быть на переднем плане (не начиная с NT4.0). Таким образом, что продолжается?

Резюме, что мы знаем до сих пор: Процессы добираются для сменяний согласно приоритету, но не к абсолютному исключению процессов более низкого приоритета (хорошо, потоки действительно, но позволяет, сохраняют вещи к процессам для простоты обсуждения). Что происходит, когда процесс получает свою "очередь"? Это добирается для выполнения за единицей времени, названной квантом. Какой длины квант? Это зависит...

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

Можно принять решение использовать короткие или длинные кванты (значение по умолчанию коротко на рабочей станции ОС, долго на серверах), и повысить приоритетный процесс или не (переменная для w/s, зафиксированного для серверов по умолчанию), и, если повышено, сколько (эффективно до 3 раз). Теперь, игривая часть этого - то, что, если Вы принимаете решение изменить множитель, Вы заканчиваете со всем имеющим очень короткие значения для кванта, тогда как, если Вы отключаете передний план, повышающий все, получает более длительную, но равную сумму. При отключении его, конечно, фоновые сервисы окон получают тот же квант как пользовательские приложения, которые не могли бы быть идеальными. Необходимо установить значение в реестре в: HKLM\System\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation, с помощью небольшой маски. Для создания вещей легче наиболее вероятные значения, которые Вы хотели бы:

2 = значение по умолчанию, значения по умолчанию использования средств с максимальным повышением. значения по умолчанию на рабочей станции O/S являются короткими и переменными. 8 = зафиксированный, короткий квант (передний план и фон равны) 40 (десятичное число, x28 шестнадцатеричное число) = зафиксированный и длинны (это совпадает со значениями по умолчанию сервера), 36 (десятичное число, x24 шестнадцатеричное число) = короткое, переменное, но минимальное повышение для приоритетного процесса. Я думаю, что это - то, которое, вероятно, принесет Вам большую часть пользы для сокращения суммы, что другие приложения конкурируют, но позволяют Excel получать больше ресурса, когда на переднем плане (как долго, поскольку Вы также повышаете его приоритет).

Попробуйте его и посмотрите, я надеюсь, что это помогает - Ваш пробег может варьироваться, конечно.

В стороне: много других приложений или процессов не имеет ЦП как их узкого места - Ваши примеры синхронизирующего Outlook и IE, просматривающий, вероятно, имеют сеть, и возможно для Outlook некоторый диск IO как более важные факторы в их скорости, поэтому получают ли они приоритетное повышение или нет, влияние в видимой производительности, вероятно, ниже того, что Вы видите простым наблюдением.

3
ответ дан 07.12.2019, 12:48
  • 1
    BasicallyMoney.com, как изменить установку для квантовых правил через XP gui, но фиксация ключа реестра является все еще тем же для ОС от NT4 до Windows 7 так, являются более общими. Установка "Фоновых сервисов" совпадает с 'зафиксированной' установкой. И отметьте, это не приоритетное повышение, оно изменяет длину 'интервала', который получает каждый процесс. Приоритет является независимым свойством, и не повышенный путем нахождения на переднем плане. – AdamV 30.10.2009, 16:43

Теги

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