Golang - Novo projeto opensource chamado Gonotin

Por paulo, Qua 14 Outubro 2015, na categoria Golang

benchmark, comparar, dados, golang, gonotin, performance, script

Olá,

Recentemente necessitamos fazer uma comparação de arquivos para saber se os números de telefone de uma base existiam em outra e depois de várias tentativas para achar a quantidade correta de registros, eu desenvolvi alguns scripts para fazer essa comparação independente da ordem dos dados e realizando a comparação um a um.

Inicialmente fiz em PHP, porém usando a função IN_ARRAY, notei que a performance estava péssima. Com um arquivo de 200mil (2.5mb) registros esperei quase 45 minutos e ainda não tinha finalizado, por fim desisti e resolvi reescrever usando o Go.

Ao reescrever o código em Go o processamento foi quase que imediato usando a abordagem do MAP. Você cria um map com a chave a valor sendo o texto que você tem e verifica se os itens existem no MAP ou não.

Após esta abordagem funcionar muito bem no Go, escrevi diversas formas no PHP de processar os mesmos arquivos para fazer um benchmark de performance e a melhor performance alcançada foi usando a função ISSET.

Depois decidi também criar um gerador de arquivos com números aleatórios para fazer listas com dados para os meus testes e validar possíveis erros e melhorar os scripts.

Todo o código está disponível no Github de forma gratuita e pode ser acessado em:

https://github.com/paulo-coutinho/gonotin

Dá pra fazer a mesma usando a função DIFF do linux/osx, porém os dados precisam estar ordenados nas duas listas.

Espero com este script poder ajudar a todos que precisam resolver este problema de forma prática.

Obrigado e até o próximo post pessoal.

Outros conteúdos relacionados

Sáb 28 Novembro 2015
Que banco de dados as grandes empresas usam?
Dom 31 Julho 2016
Golang - GoDiffExporter - Exporte seus DIFFs com este utilitário
Sáb 28 Maio 2016
Golandy - Game multiplayer open-source em HTML5 com Phaser + Golang e WebSocket - Versão para desktop, browser, android e iOS
Sáb 21 Maio 2016
Novos projetos open-source: GoCI e GoHC (integração contínua e healthcheck)
Qua 24 Fevereiro 2016
Golang - Nova versão 1.6 (suporte nativo a HTTP2)
Sáb 09 Janeiro 2016
Golang - LogStack - Nova ferramenta criada para armazenar, pesquisar e coletar estatísticas de Logs
Sex 06 Novembro 2015
Golang - Novas bibliotecas - Lista thread safe e web response
Qui 02 Julho 2015
Golang - WebRemoteLog - Um serviço feito com a linguagem Go para log remoto
Sex 04 Março 2016
Google Apps Scripts - Ferramenta do Google para integração entre seus apps, automatização de tarefas e aplicações na loja do Google Chrome
Ter 22 Setembro 2015
PHP - Script para executar uma limpeza de e-mails inválidos e ruins em um arquivo