Analise um algoritmo decomposto em muitas funções pequenas: como essa decomposição pode impactar o desempenho…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Identificar o comportamento dos algoritmos no que diz respeito ao consumo de recursos como tempo de execução, espaço de memória e energia, entre outros.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Analise um algoritmo decomposto em muitas funções pequenas: como essa decomposição pode impactar o desempenho em termos de tempo de execução e uso de memória?
- A) Separar funções pequenas automática e instantaneamente melhora o desempenho do algoritmo sem custo.
- B) Uma única função grande é sempre mais eficiente em termos de uso de memória e tempo de execução.
- C) Pode aumentar overhead de chamadas e uso de pilha, elevando tempo de execução e memória temporária; porém melhora legibilidade e possibilita otimizações locais.
- D) Decompor funções pequenas elimina qualquer possibilidade de overhead na execução do algoritmo.
- E) Todas as funções pequenas resultarão em maior uso de memória, mesmo em sistemas modernos com alto desempenho.
✅ Resposta correta: alternativa C
Resolução passo a passo
- Resolvi a questão antes de olhar o gabarito. O enunciado pergunta como a decomposição de um algoritmo em muitas funções pequenas pode afetar o tempo de execução e o uso de memória. Cada chamada de função tem um custo: o programa precisa empilhar um registro de ativação (endereço de retorno, parâmetros, variáveis locais), desviar o fluxo de execução e depois retornar. Isso é o overhead de chamadas e gera uso de pilha. Passo 2: Por outro lado, a decomposição traz benefícios: o código fica mais legível, mais fácil de testar e de manter, e permite otimizações locais, como reescrever ou acelerar apenas uma função específica. Por isso a alternativa C descreve corretamente o trade-off: aumento possível de overhead e de memória temporária, compensado por legibilidade e otimizações locais. Passo 3: Por que as outras estão erradas. A: separar funções não melhora o desempenho automaticamente nem sem custo, pois cada chamada tem algum custo. B: uma função grande não é sempre mais eficiente, já que pode ser menos legível e menos otimizável, e o compilador pode até alinhar funções pequenas (inlining), eliminando o overhead. D: a decomposição não elimina overhead, apenas pode reduzi-lo com otimizações do compilador. E: é exagero dizer que todas as funções pequenas aumentam o uso de memória, pois compiladores modernos fazem inlining e o impacto costuma ser pequeno. Passo 4: Conclusão: a alternativa correta é a C, de acordo com o gabarito oficial.
💡 Dica: Considere os prós e contras da decomposição de funções.
Alternativa por alternativa
Acredita que dividir o código em funções pequenas é uma otimização automática que melhora o desempenho sem nenhum custo, ignorando o custo real das chamadas.
Por que engana: Confundir a ideia de que funções pequenas sempre melhoram o desempenho, sem considerar o overhead que pode ser introduzido pelas chamadas de função.
Supõe que menos chamadas de função sempre significam mais eficiência, sem considerar que funções grandes podem ser menos legíveis, mais difíceis de otimizar e não garantem menor uso de memória.
Cada chamada de função implica empilhar parâmetros/retorno e overhead do ambiente de execução; em sistemas restritos isso pode degradar desempenho, embora a modularização favoreça manutenção e profiling.
Interpreta que a decomposição é uma solução absoluta que elimina qualquer custo, esquecendo que chamadas de função sempre envolvem empilhamento e desvio de fluxo, ainda que possam ser reduzidas pelo compilador.
Generaliza que qualquer função pequena sempre aumenta o uso de memória, sem considerar que compiladores modernos podem fazer inlining e que o impacto costuma ser desprezível em sistemas atuais.
Raio-X da questão
decomposição de algoritmos
diagnostico
decomposição de algoritmos · análise de desempenho
Revisar os conceitos de algoritmos e suas funções.
Confundir a ideia de que funções pequenas sempre melhoram o desempenho, sem considerar o overhead que pode ser introduzido pelas chamadas de função.
ciencia_tecnologia
pensamento_critico
cientifico
Questões parecidas com resolução
- Explique como a decomposição de um algoritmo pode contribuir para a eficiência em um projeto de programação.
- Explique a importância da decomposição em um algoritmo para resolver um problema complexo, detalhando suas etapas e…
- Qual é o principal benefício da decomposição em um algoritmo complexo?
- Qual a importância da decomposição em programação de um algoritmo?
- Como decompor um problema complexo em partes menores usando um algoritmo?
- Qual a importância da decomposição na criação de algoritmos?
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
