Em geral, a solução mais importante para um problema será a que realmente existe e é válida para os casos como eles existem para o seu problema. Em outras palavras, evite a otimização prematura até que você realmente saiba que possui um código ineficiente ou um código eficiente que precisa ser mais rápido.
Além disso, não esqueça que a melhor solução para o seu aplicativo pode não ser a solução geral do caso. Caso e argumento, alguns anos atrás, um professor deu à nossa turma um problema no qual deveríamos imprimir os 10 primeiros números de um determinado tipo (desculpe, minha memória me falha quanto ao tipo, mas esse era um dos números mais incomuns classes) e fomos submetidos a um teste para verificar se o número era do tipo especificado. Essa foi a extensão do problema que nos foi dado e fomos informados de que era devido no dia seguinte, com a solução mais eficiente recebendo crédito total. A seguinte palestra do professor resumiu os resultados:
- Alguns alunos usaram um loop simples e a fórmula fornecida para verificar se os números estavam corretos e os exibiu, lentos, mas concluíram o trabalho, O (n ^ 3).
- Outros estudantes fizeram sua pesquisa e encontraram uma fórmula que fazia um trabalho melhor de verificação para garantir que um determinado número fosse válido; esses programas eram muito mais rápidos, O (n ^ 2).
- Um aluno usou a fórmula lenta para gerar os valores e depois os copiou em uma matriz constante em seu código e exibiu o conteúdo disso, O (n).
A solução final foi considerada a mais eficiente pelo professor. Acontece que o problema era realmente um exercício para entender completamente o problema e não apenas sair e encontrar a solução mais eficiente.
O ponto acima é que, quando se trata de encontrar um problema para uma solução eficiente, geralmente é melhor dedicar algum tempo para garantir que você realmente entenda qual é o problema antes de começar a escrever o código ou tentar otimizar o código. Se você pode armazenar um conjunto de valores de referência em uma matriz constante, é melhor fazer isso do ponto de vista de desempenho do que tentar escrever algum algoritmo sofisticado.
Da mesma forma, não esqueça que, para a maioria dos aplicativos, as únicas pessoas que tendem a ver código ineficiente (quando não é desnecessariamente ineficiente!) São os próprios desenvolvedores. Se você escrever um código limpo que faça exatamente o que é necessário, é provável que na maioria das vezes os usuários não notem problemas de desempenho ao trabalhar com o programa e quando otimizem apenas as partes mencionadas. você.