2020-03-26 – Optimização de Código numa Calculadora de Subnetting IPV4 – 4 milhões de subnets calculadas em 9 segundos num PC velho, em C++
Uma imagem partilhada com amigos em 26 de Março, sobre o projecto Knowledge Tester, em que andava a optimizar em termos de velocidade o código de cálculo de subnetting.
Descrição na altura:
«Optimização de código. 4 milhões de subnets calculadas em 9 segundos, 500.000 redes por segundo (inicialmente era 18 e 15 e 12).
Quando programo faço coisas à pressa, para funcionar, mas depois convem optimizar algumas coisas. Neste caso sempre que se inseria (ver código abaixo) um bit ao vector, perdia-se tempo com resizes, reescrever, realocações de memória, etc, e a coisa resolve-se facilmente pelo que podem ver no resultado.
Em simultâneo, usar vectores por referência e não os retornar, usar vectores de ints e não bools, optimizados para performance e não memória (há trade-off aqui), etc, etc.
Podia tentar melhorar ainda mais, mas acho que daqui já não vou ganhar muito mais. E se optimizo muito, o programa fica rápido mas não o termino, tenho de escolher um equilíbrio entre o tempo de desenvolvimento e a velocidade, não posso ter o melhor dos dois mundos. Fica assim este.
Era 18 segundos a primeira versão, depois 15 a segunda, depois 12 a 3ª (à medida que fazia alterações), até que depois cheguei à de 9 segundos.