Como a listagem de processos no terminal pode ser tão lenta no Windows? Isso pode ser acelerado?

Como a listagem de processos no terminal pode ser tão lenta no Windows? Isso pode ser acelerado?

Eu finalmente criei este comando:

tasklist /V /NH | find "test"

Ele lista todos os processos em execução com informações "detalhadas" (o "título da janela" é o que precisamos, então /V deve ser usado), pula a linha do cabeçalho e, em seguida, canaliza isso para "find" para corresponder apenas aos processos que contêm "test " em algum lugar.

Enquanto digito isso, percebo que ele verifica "teste" em qualquer lugar da linha inteira, conforme gerado pela lista de tarefas, o que não é a intenção (deve-se verificar apenas a parte do título da janela), mas isso é de importância secundária, pois na prática, nunca corresponderá, pois "test" é na realidade uma string com vários espaços que é muito improvável que apareça no resto da linha.

De qualquer forma, o comando acima leva literalmente alguns segundos para ser executado, e não é por causa da tubulação para "encontrar", porque tentei sem ele. É muito lento buscar essas informações, que você pensaria que estariam tão prontamente disponíveis na RAM que quase obteria uma respostaantesemitindo o comando, mas aparentemente eles estão executando uma lógica complicada que parece estar lendo grandes pedaços de armazenamento em disco. (De que outra forma explicar os segundos de carregamento todas as vezes?)

Depois de ler o manual da "lista de tarefas", não há como especificar que me importo apenas com o "título da janela" e é tudo o que quero que seja gerado (o que pode ser mais rápido).

Percebi que é muito mais rápido se você filtrar por uma "imagem" específica (EXE), mas não quero isso, pois isso deve apenas verificar/se preocupar com o "título da janela" (também conhecido como "título do processo" ).

Alguma boa ideia?

Responder1

Você pode filtrar por título da janela com /FI "WINDOWTITLE eq Window Name". Embora não seja muito mais rápido.

Você pode conseguir o mesmo, mas muito mais rápido com o PowerShell:

get-process | where-object {$_.mainWindowTitle -like "test*"}

O que é concluído em cerca de um segundo.

informação relacionada