Percebi que quando o Excel 2007 (e provavelmente versões anteriores) tem o foco da janela, o Excel é executado a toda velocidade, o que significa que os arquivos são abertos rapidamente e as macros do VBA de execução longa são executadas rapidamente.
Se a janela do Excel perder o foco, a prioridade do encadeamento do Excel parecerá cair drasticamente e os arquivos grandes que estavam sendo abertos quando você moveu o foco abrem lentamente, e as macros VBA complexas demoram muito tempo para serem concluídas.
Existe alguma maneira de manter a prioridade do Excel alta, independentemente de estar focada ou não?
Sei que poderia aumentar artificialmente a prioridade do segmento através do Gerenciador de Tarefas, mas não tenho certeza de quais efeitos indiretos isso pode ter para minhas planilhas ou SO.
Meu sistema é um Dual Core rápido com 4Gb RAM e está executando o Vista 64.
EDIÇÃO PARA ESCLARECIMENTO:
Meu problema não é simplesmente aumentar a prioridade do processo do Excel por meio do Gerenciador de tarefas, porque isso afeta apenas o Excel quando ele tem o foco da janela.
A questão é o que acontece quando o Excel perde o foco da janela.
Ao usar o Excel extensivamente, parece que, por design , diminui deliberadamente sua própria prioridade de processo quando a janela do Excel não tem foco.
Definir uma prioridade mais alta para o processo do Excel não impede que isso aconteça - ele apenas concede ao Excel uma prioridade de processo mais alta quando possui o foco, mas ainda diminui drasticamente quando perde o foco.
No uso normal do Excel (provavelmente 99% de todos os usuários), você não notaria esse efeito, mas com uma planilha massiva (cerca de 2000 planilhas, eu acho) e macros VBA complexas que levam alguns minutos para serem executadas, o efeito é muito perceptível.
Idealmente, preciso manter a mesma prioridade de thread, independentemente de a janela do Excel estar focada.
Até o momento, eu estava sentado no computador por alguns minutos durante o processamento, para não clicar acidentalmente na janela do Excel quando ele estava sendo processado, mas eu esperava que houvesse uma solução melhor ... talvez algum tipo de corte no registro?
EDITAR:
Eu só encontrei uma outra menção desse problema na rede neste link
Esta é a citação relevante ...
No entanto, se eu tornar a janela do Excel 2000 visível para o usuário e também manter a janela em foco, as macros serão executadas com a velocidade esperada. Novamente, a janela deve ter foco ou a macro diminui para um rastreamento novamente.
fonte
Respostas:
As edições sem servidor do Windows, por padrão, fornecem um aumento de prioridade ao processo em primeiro plano. Quando você coloca o Excel em segundo plano, ele perde o impulso que anteriormente estava em primeiro plano; algum outro programa obtém o aumento de prioridade.
Você pode alterar uma configuração para que os programas não obtenham mais esse impulso. Nota: Isso não afetará apenas o Excel, mas qualquer programa que se qualificasse para um aumento.
Veja como ajustar a configuração no Windows XP:
Clique na guia Avançado . O primeiro painel é Agendamento do processador :
Altere-o do padrão de "Programas" para "Serviços em segundo plano" e deve fazer com que o Excel se comporte da maneira que você deseja quando está em segundo plano.
fonte
Não acho que haja um problema com a alteração da prioridade do processo do Excel para Acima do normal no seu caso. Não deveria ser um problema.
Não o faça mais alto , onde competirá com os processos do sistema.
Não o suspenda , ou você pode ter outras coisas suspensas!
Se você usar o Process Explorer de Mark Russinovich para examinar as prioridades dos processos em execução no seu sistema. Ele mostra os seguintes valores de prioridade e sua associação.
Você pode usar o Process Explorer e tentar redefinir a priorização para o Excel .
Mova-o acima de 8 , mas não ultrapasse 12
Acima do Normal às 10 , espero.
Na mesma linha, se você acha que algum processo está consumindo muito tempo do processador enquanto não está em foco, você pode diminuir sua prioridade até Ocioso .
Eu costumo usar essa técnica para isso.
fonte
am
procurando por esse detalhe, mas meu entendimento é que a janela em foco geralmente estará naNormal
prioridade (por padrão) e, quando você passarExcel
para aAbove Normal
prioridade, ela deverá estar em uma prioridade mais alta que a janela em foco. Mas, com prioridade mais baixa do que o sistema processa - é onde você deseja que ele esteja.Há algumas coisas diferentes a serem consideradas aqui: quando você altera a prioridade de um processo, essa prioridade básica é herdada por todos os segmentos e por outros processos iniciados. A prioridade atual é composta da prioridade básica e vários fatores que determinam se ela deve ou não ser aprimorada - estar em primeiro plano não necessariamente aumenta a prioridade, mas coisas como sair de um estado de espera ou fazer algum pedido de veiculação podem dê um pequeno impulso temporário.
Sugiro que a execução do processo do Excel com alta prioridade ao trabalhar nessas pastas de trabalho muito intensas possa fazer sentido, e eu diria que um segundo atalho chamado "Excel de alta prioridade" pode ser uma boa maneira de fazer isso. Primeiro, crie um arquivo em lotes de uma linha que execute o comando start com as opções apropriadas, por exemplo:
start "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office12\EXCEL.EXE"
(em uma versão de 64 bits do Windows, isso seria, a
start "high priority excel" /max /high "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE"
menos que você também esteja executando uma versão de 64 bits do Office, disponível apenas para 2010start "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE"
). Observe que o título da janela pode ser o que você quiser, mas não é opcional.Agora salve isso como, por exemplo, o HiperExcel.cmd em algum lugar útil - talvez a pasta office, ou a pasta ac: \ scripts ou algo assim, ou a sua pasta pessoal, para que possa circular de máquina em máquina. Crie um novo atalho que aponte para esse arquivo, torne a pasta inicial a pasta em que o arquivo é mantido. Escolha um ícone para o arquivo - navegue até o executável do Excel.exe e escolha algo diferente do ícone usual do Excel para maior clareza.
Clique no seu novo atalho e ele invocará o Excel em execução como um processo de alta prioridade, com uma prioridade básica de 13 e, quando estiver em execução, provavelmente obterá a prioridade máxima para processos não em tempo real de 15. Mesmo se algo mais melhorar, não deve ter maior prioridade. Observe que o processo em primeiro plano NÃO recebe um aumento de prioridade apenas por estar em primeiro plano (não a partir do NT4.0). Então, o que está acontecendo?
Recapitule o que sabemos até agora: Os processos se revezam de acordo com a prioridade, mas não com a exclusão absoluta dos processos de prioridade mais baixa (bem, encadeamentos realmente, mas vamos manter as coisas em processo para facilitar a discussão). O que acontece quando um processo recebe sua "virada"? Começa a funcionar por uma unidade de tempo chamada quantum. Quanto tempo é um quantum? Depende...
É aqui que o processo em primeiro plano utiliza mais recursos - quando recebe uma curva, essa curva pode durar três vezes mais que as curvas dos processos em segundo plano. Portanto, pode não ser muito frequente (dependendo da prioridade), mas quando ocorre, o monopoliza por mais tempo.
Você pode optar por usar quantums curtos ou longos (o padrão é curto no SO da estação de trabalho, muito tempo em servidores) e ter o processo em primeiro plano otimizado ou não (variável para w / s, fixo para servidores por padrão) e, se aprimorado, por quanto (efetivamente até 3 vezes). Agora, a parte mais complicada disso é que, se você optar por alterar o multiplicador, terá tudo com valores muito curtos para o quantum, enquanto que, se você desativar o aumento do primeiro plano, tudo terá uma quantidade maior, mas igual. Se você desativá-lo, é claro, os serviços do Windows em segundo plano recebem o mesmo quantum que os aplicativos do usuário, o que pode não ser o ideal. Você precisa definir o valor no registro em: HKLM \ System \ CurrentControlSet \ Control \ PriorityControl \ Win32PrioritySeparation, usando uma máscara de bit. Para facilitar as coisas, os valores mais prováveis que você deseja são:
2 = valor padrão, significa usar padrões com aumento máximo. os padrões na estação de trabalho O / S são curtos e variáveis. 8 = quantum fixo, curto (o primeiro plano e o fundo são iguais) 40 (decimal, x28 hex) = fixo e longo (é o mesmo que o padrão do servidor) 36 (decimal, x24 hex) = aumento curto, variável mas mínimo para o processo em primeiro plano . Eu acho que esse é o que provavelmente oferecerá o maior benefício para reduzir a quantidade de competições de outros aplicativos, mas permitirá que o Excel obtenha mais recursos quando estiver em primeiro plano (desde que você também aumente sua prioridade).
Experimente e veja, espero que isso ajude - sua milhagem pode variar, é claro.
Além disso: muitos outros aplicativos ou processos não têm a CPU como gargalo - seus exemplos de sincronização do Outlook e navegação no IE provavelmente têm a rede e, possivelmente, para o Outlook, algumas E / S de disco são fatores mais importantes em sua velocidade, para obter uma em um primeiro plano ou não, o impacto no desempenho visível provavelmente está abaixo do que você pode ver pela simples observação.
fonte
Não há problema em aumentar a prioridade de um processo para "acima do normal" ou "alto", apenas não defina para "tempo real". Não posso ajudá-lo com o Excel especificamente.
fonte
É possível que a manipulação de prioridade esteja sendo feita não pelo Excel, mas pelo próprio Windows. O Windows possui um mecanismo no qual a prioridade dos processos com janelas em primeiro plano é aumentada; portanto, quando o Excel perde o foco, sua prioridade volta ao normal (que é um pouco menor).
A única página no MSDN que pude encontrar sobre isso com uma pesquisa rápida é o Priority Boosts :
Pelo que ouvi, existem maneiras de desativar esse aumento de prioridade.
fonte
Apenas tente isso, funcionou para mim.
Não é uma maneira muito agradável, mas na verdade apenas dobrou minha velocidade de cálculo! Surpreendente! (mas vou verificar os resultados, não tenho certeza sobre eles ...)
Seu formulário do usuário deve estar no centro da tela em 1024 * 768. Basta enviar por software um clique direito no formulário do usuário.
Cálculo completo, mas não use o computador enquanto ele calcula (inicie outros programas, janelas ..).
Apenas tente me dizer como funcionou para você!
fonte
Depois de uma longa noite de cálculo em velocidade total, e após a verificação, os resultados desta manhã foram ... totalmente errados.
Então eu acho que é apenas um bug, os cálculos não são feitos corretamente.
Clicar no formulário do usuário no cálculo apenas acelera a velocidade do processo, mas não recalcula totalmente a folha além. Eu preciso que eu estava em tempo real com prio.
Outra coisa interessante é ajustar a tarefa do processo com prio_x64_199_2367.exe, http://softziz.com/2010/11/prio-64-bit-1-9-9/
Isso salva a prioridade do processo definida com CTRL ALT DEL, dentro do gerenciador de tarefas, para usos futuros.
Atenciosamente,
John
fonte