Bom dia,
venho ate vcs hoje com o intuito de obter algumas opiniões sobre o meu projeto de Web Crawler. Vale ressaltar que este é um projeto pessoal, não se trata de “dever de casa” nem nada do gênero.
O meu crawler tem o funcionamento basico de todos os outros
- visitar um site
- coletar informações
- coletar links
- visitar outro site
O que eu estou tentando é melhorar o desempenho da aplicação e reduzir o consumo de memoria. Ao realizar o passo 3, o crawler insere os links encontrados no frontier global da aplicação.
A estrutura que eu estou usando é um Stack. porem pude reparar que os links na base da pilha não estão sendo visitados. Pensei em utilizar um LinkedList pois cada thread retira o primeiro link da pilha, ou seja, eu não faço remoção no meio do buffer, apenas nas extremidades e o LinkedList comporta estas funcionalidades. Vcs estao de acordo com a escolha ? coinhecem outra estrutura que pode otimizar a performance ?
No teste de stress, rodando com 100 threads, o consumo de memoria alcança a casa dos 200 Mega de RAM, alguem me sujere alguma estrategia para reduzir o consumo de memoria ? eu não gostaria de fazer cache no disco pois isso prejudica o desempenho. Alguma solução mais viavel ?
Percebi tambem que o uso de expressoes regulares para percorrer grandes textos consome muita RAM, isso e normal ?
Bem, se alguem ai ja codificou este tipo de aplicação ? gostaria de sugestões a respeito
Att,