Parece que há mais do que apenas prioridade de processo "regular" no trabalho aqui. Como observei na pergunta, o agendador de tarefas, por padrão, executa sua tarefa com prioridade menor que a normal. Esta questão no StackOverflow descreve como corrigir qualquer tarefa para executar na prioridade Normal, mas a correção ainda deixa uma coisa ligeiramente diferente: prioridade de memória. A prioridade de memória era um novo recurso do Windows Vista e está descrita em este artigo da Technet . Você pode ver a prioridade de memória usando o Process Explorer , que é uma ferramenta imprescindível para qualquer administrador ou programador.
De qualquer forma, mesmo com a correção de prioridade da tarefa agendada, a prioridade de memória de sua tarefa é definida como 4, que é um degrau abaixo da configuração normal de 5. Quando aumentei manualmente a prioridade de memória de minha tarefa até 5, o desempenho estava a par com a execução do processo de forma interativa.
Para informações sobre como aumentar a prioridade, consulte minha resposta a uma questão StackOverflow relacionada sobre a prioridade IO; a definição da prioridade de memória é feita de maneira semelhante, via NtSetInformationProcess, com PROCESS_INFORMATION_CLASS
definido como ProcessMemoryPriority
(o valor disso é 39 ou 0x27). Eu posso fazer um utilitário gratuito que possa ser usado para definir isso, se outros precisarem dele e não tiverem acesso às ferramentas do programador.
EDIT: Eu fui em frente e escrevi um utilitário gratuito para consultar e definir a prioridade de memória de uma tarefa, disponível aqui . O download contém o código-fonte e um binário compilado.