ola, tenho 300 bilhões de números que tenho que testar e ver se eles atendem algumas condições. como fazer isso de forma eficiente.? pois sei que se eu usar um laço de repetição para testar valor a valor vai demorar muito tempo.
ola, tenho 300 bilhões de números que tenho que testar e ver se eles atendem algumas condições. como fazer isso de forma eficiente.? pois sei que se eu usar um laço de repetição para testar valor a valor vai demorar muito tempo.
Existem algumas técnicas básicas de pesquisas que são implementadas de acordo com a estrutura e a disposição dos dados nessa estrutura.
Ex.:
Vetor, array ou lista: pesquisa sequencial ou binaria;
Grafo: busca em largura ou profundidade;
Esses são alguns exemplos de técnicas que vão depender do tipo da estrutura e de como os dados estão ordenados.
Aconselho a você identificar em qual estrutura os números estão alocados, e em que ordem, para usar um algorítimo especifico para o seu caso.
Espero ter ajudado.
Eu adicionaria: Ver se existe alguma condição matemática nessas condições que façam com que você não teste todos os 300 bilhões de números.
— ViniGodoy 03 de abr de 2015use multithreads, em um computador com 4 núcleos vai ser 4 vezes mais rápido, se entende alguma coisa de programação distribuída monte um cluster, 10 computadores com 4 núcleos cada vai ser 40 vezes mais rapido
Jean, de onde você obtém esses números?
Banco de dados?
Se fosse no banco, eu, pessoalmente, preferiria implementar alguma procedure para tal.
Se esses números vão ser testados em subconjuntos a melhor estratégia é gerar os subconjuntos em uma thread e fazer a verificação em outras threads (padrão 1 produtor - vários consumidores). O número de threads vai depender da configuração do equipamento que vai rodar o pgm, não crie e destrua as threads, isso causaria um overhead maior que rodar em uma thread. Se for salvar os números em arquivo é melhor cada thread salvar num arquivo e no final juntar os arquivos.
Se tiver várias condições a serem testadas, procure descartar os números tão logo uma condição não seja satisfeita.