Postagem em destaque

A incrível velocidade do Go

Um dos motivos que gosto do Go (a linguagem de programação, não o jogo), é que ele é extremamente rápido. E não estou falando de utilizar goroutines pois aí é covardia.

Estamos migrando um sistema de Coldfusion para Go e PHP e uma das rotinas insere um registro no banco de dados no início e outra no fim do processo. Pense como se fosse um log, mas um log específico para essa rotina. Dessa forma:

2023-05-18 17:45:03.687    ... [processaImagem] Incorporando imagem
2023-05-18 17:45:03.688    ... [processaImagem] Imagem incorporada

Entre o inicio e o final do processamento levou 1ms. Até aí, tudo bem, se não fosse o fato dessa tabela ter o campo timestamp como parte da chave primária. Se reparar, o tempo é definido em milissegundos. Com o Coldfusion esse processo dura cerca de 20ms. Simplesmente migrando para Go, o tempo caiu muito, para menos de 1ms e assim, começou a dar erro de chave duplicada.

A solução? Depende, sempre depende. No nosso contexto, a mais simples foi feita, pois não temos necessidade de otimizar ainda mais a velocidade, até porque mesmo levando 1ms é 20 vezes mais rápido do que já estava rodando e que já atendia com folga a nossa necessidade. Colocamos um simples time.Sleep(time.Milisseconds), para que o processamento dure pelo menos 1ms. A alteração da chave primária não compensaria o esforço.

Comentários

Postagens mais visitadas deste blog

Netflix não mostra ícone de streaming

Google Hacking

FTP não funciona no PHP