Otimizando funções com memoize

Em ciência da computação, memoize ou memoization é uma técnica de otimização que faz um cache do resultado de uma função com base nos parâmetros passados para ela.

Essa técnica faz com que a execução real da função só aconteça a primeira vez que o parâmetro ou conjunto de parâmetros é passado, pois como fará um cache do resultado, ao receber os mesmos parâmetros, retornará o valor que está armazenado no cache.

Antes de utilizar a técnica, vamos criar duas funções. A Primeira para calcular o fatorial de um número.

func fatorial(n int) int {
    total := 1
    for i := 2; i <= n; i++ {
        total *= i
    }

    return total
}
Leia mais »

Como o bazel funciona internamente?

Por anos Bazel sempre me pareceu uma ferramenta muito boa e ao mesmo tempo, por uma soma da sua linguagem própria (starlark) e a estrutura dos arquivos, muito complicada de aprender.

Somente depois de entender o que acontece “atrás das cortinas” e os conceitos da ferramenta é que finalmente pude começar a tirar o melhor dela. Por isso resolvi criar uma série de posts para compartilhar meu aprendizado.

Se você já teve algum contato com Bazel, vou pedir para que não se preocupe com os arquivos WORKSPACE, BUILD e .bzl por enquanto (se você não teve contato também não precisa se preocupar). Nesse post, vamos deixar esses arquivos de lado e falar um pouco sobre como o bazel funciona internamente.

Leia mais »