Como posso diagnosticar a causa do tempo drasticamente mais lento necessário para completar um “search files for a string” ao usar o Zend Studio?

0

Freqüentemente, uso a função Search dentro de Zend Studio software (que é construída sobre Eclipse ). Eu uso isto muito. Provavelmente 10 a 100 vezes por dia.

Eu experimentei uma variedade misteriosa no tempo de pesquisa, quando eu uso a Pesquisa para encontrar uma string em um dos arquivos dentro do projeto. Geralmente, leva apenas um segundo para concluir a solicitação de pesquisa. Mas às vezes leva de 10 a 20 segundos, e esse é o problema que procuro resolver / diagnosticar.

O que eu faço:

  • pressione Ctrl-H (abre o menu de pesquisa)
  • digite minha string de pesquisa
  • pressione Buscar
  • geralmente leva cerca de 1 segundo ou menos, mas às vezes leva de 10 a 20 segundos [e esse é o problema]

O que eu vejo

Acontece esporadicamente, não o tempo todo, mas acontece freqüentemente mesmo assim.

O que eu tentei:

Eu tentei

  • restringindo Working Set a subpastas específicas
  • File name patterns restrito a extensões de arquivo específicas
  • Defragged my drive
  • O antivírus não parece estar digitalizando
  • O uso de uma ferramenta como Process Monitor não reúne muitas informações. ou seja, da última vez que percebi, acho que svchost parecia estar fazendo muitas solicitações de leitura de arquivos, mas isso não me dizia muito.

Pergunta

Como posso diagnosticar uma causa dos abrandamentos da pesquisa?

Estatísticas

5461 arquivos, 352 pastas 139MB de tamanho total de arquivos no disco

Atualizar o uso do Process Monitor

Eu fiz minha pesquisa com o ProcMon duas vezes - a primeira vez foi lenta e a segunda foi rápida. A primeira pesquisa durou 40 segundos, também conhecida como lento . A segunda pesquisa correu 1,8 segundos, também conhecida como rápido . A pesquisa lenta é repetida pela primeira vez, depois de eu não usar a pesquisa por um tempo e, em seguida, ela corre rápido novamente.

Eu executei um diff para eventos de busca lentos e rápidos, e entre todas as execuções CreateFile, QueryDirectory, Close File, ReadFile, QueryStandardInformationFile Operations para ambos , a diferença entre duas execuções foi - extra 2.649 linhas para lento, semelhante a :

Process Name: ZendStudio.exe
Operation: ReadFile
Path: jpgraph\src\jpgraph_plotband.php
Result: SUCCESS
Detail: Offset: 0, Length: 8,192, I/O Flags: Non-cached, Paging I/O, Priority: Normal

Meu palpite sobre o motivo da pesquisa lenta

Meu palpite é que, pela primeira vez, os arquivos talvez sejam realmente lidos, mas na segunda vez eles são totalmente armazenados em cache em algum lugar, e é por isso que há uma diferença de velocidade. Eu acho que leva cerca de 40 segundos para ler todos os arquivos pela primeira vez, e apenas 2 segundos para passar por eles novamente, quando eles estão em cache.

Nesse sentido, caching explica essa diferença de velocidade incrivelmente dramática. Eu tenho que me perguntar, no entanto, se eu tenho uma unidade lenta, antiga ou mal fragmentada para a busca levar 40 segundos, já que não consigo imaginar que o tempo de busca lento esteja dentro da norma aceitável.

    
por Dennis 03.08.2016 / 21:37

1 resposta

1

Dennis

No passado eu tive um problema como o seu e usei o Process Monitor da Sysinternals para diagnosticar meu problema. Desde que este software mostra tudo o que acontece "sob o capô" no Windows, talvez ele possa ajudá-lo.

É meio difícil encontrar a solução dessa maneira, mas pode ser útil se você tiver paciência e configurar filtros no Procmon corretamente. Você precisa definir um filtro para o seu processo (sua imagem executável), para que ele capture apenas o que seu software está fazendo.

Ao analisar o acesso ao disco e ao registro, às vezes, você pode ter algumas pistas sobre qual é o problema.

    
por 08.08.2016 / 17:32