Vc não disse qual linguagem está usando, mas enfim...
Praticamente todas as linguagens (pelo menos as mais usadas) possuem profilers: ferramentas que analisam a performance de um programa.
As funcionalidades variam, mas de forma geral elas mostram o consumo de memória e CPU, entre outras informações. Os mais detalhados mostram as informações segmentadas por funções/métodos, quantas instâncias de cada classe são criadas, etc. Assim vc consegue saber quais os pontos críticos e gargalos do seu sistema.
Não vou listar tudo porque é muita coisa, mas basta fazer uma busca "[nome da linguagem] profiler", teste algumas e veja qual gosta mais.
Sugiro testar com dados reais, ou o mais próximo possível disso. Faça alguns testes dobrando a quantidade de dados e veja como o consumo aumenta (linearmente, exponencialmente, etc). Isso indica se o algoritmo usado pode ser melhorado, por exemplo.
Claro, o teste pra valer vai ser só no ambiente de produção, em situações reais. Mas um bom teste com ferramentas de análise adequadas pode te dar dicas preciosas de onde melhorar. Geralmente cai na regra de Pareto: os problemas mais críticos costumam estar em poucos pontos específicos (geralmente, claro, cada caso é um caso).