Postagem em destaque

Código Limpo: Nomes Significativos

Imagem
Às vezes fico com um assunto na cabeça por semanas, até achar uma situação ou um exemplo que esclareça a situação. Explico: estava querendo já a algum tempo escrever sobre boas práticas de programação, e pensei em iniciar por "Nomes Significativos", para seguir a nomenclatura utilizada pelo ótimo livro Código Limpo , de Robert C. Martin.  Entretanto, ficava sempre amarrado em exemplos que pareciam ser bons, mas que ainda eu não tinha visto a utilidade prática.  Antes de continuar preciso explicar que tenho um hábito de anotar num bloco de papel todas as ideias que surgem, pois elas desaparecem com a mesma velocidade que aparecem. Para isso tenho um bloco e caneta na mesa de cabeceira (além de um no banheiro), pois esses são os lugares onde tenho mais ideias... Vai entender... Semana passada, estava com um problema bem complicado e tive uma ideia: "vou criar uma variável para indicar que quando um arquivo tiver um certo tamanho deve gravar algumas informações no log. Pois

Concorrência com GO

Comecei a programar com GO há pouco tempo. E logo me deparei com algumas dúvidas de como usar a concorrência. Pesquisei bastante e encontrei algumas soluções muito interessantes, as quais compartilho aqui.

Sugiro você primeiro assistir esse video do Rob Pike no Google I/O 2012: https://youtu.be/f6kdp27TYZs. Os programas que ele mostra podem ser encontrados aqui: https://github.com/kevchn/go-concurrency-patterns. E a apresentação que ele utilizou está aqui: https://talks.golang.org/2012/concurrency.slide

Outros links que li e achei úteis sobre concorrência em GO:

Por fim, criei um exemplo (https://github.com/alexsetta/seqVsConc), no qual comparo o desempenho de duas funções que fazem a mesma coisa: acessar um slice de URLs e retornar o StatusCode de cada uma. A diferença é que uma função faz a busca sequencial e a outra de forma concorrente.

Na prática, o tempo sequencial é a soma de todos os tempos individuais pois a função acessa uma URL, espera a resposta e segue adiante e o tempo concorrencial é, para um número limitado de URLs, o tempo de acesso da URL mais lenta, pois neste caso a função dispara várias chamadas simultâneas e quando a mais lenta terminar as outras já terão terminado.

O tempo de resposta fala por si só:



Comentários

Postagens mais visitadas deste blog

Netflix não mostra ícone de streaming

Google Hacking

FTP não funciona no PHP