Guia do usuário
Como usar o Big O Analyzer, passo a passo.
Índice
Visão geral da interface
A interface do Big O Analyzer é dividida em três áreas principais:
No painel esquerdo, o editor Monaco permite escrever ou colar seu código, com realce de sintaxe, IntelliSense e validação em tempo real.
Na parte superior, você encontra o seletor de linguagem, de tema e o botão de análise.
No painel direito, são exibidos a complexidade, a explicação e as sugestões de otimização.
Dica: no desktop, arraste o divisor entre editor e resultados para redimensionar os painéis.
Recursos do editor
O Monaco traz uma experiência parecida com VS Code:
Palavras-chave, strings, comentários e operadores têm cores distintas, facilitando a leitura.
Sugestões de autocompletar enquanto você digita. Use Ctrl+Espaço (ou Cmd+Espaço no Mac) para forçar a sugestão.
Erros de sintaxe aparecem sublinhados no código e o contador de erros é mostrado no cabeçalho do editor.
Seleção de linguagem
Escolha a linguagem no painel superior.
Suporte a ES6+ incluindo:
- Arrow functions
- Async/await
- Desestruturação
- Template literals
- Sintaxe moderna
Suporte a Python 3.x incluindo:
- List comprehensions
- Geradores
- Type hints
- f-strings
- Biblioteca padrão
Suporte a Java 8+ incluindo:
- Expressões lambda
- Streams API
- Collections Framework
- Generics
- Bibliotecas padrão
Importante: ao trocar de linguagem, o editor pode carregar um exemplo padrão. Salve seu código antes de mudar, se quiser preservá-lo.
Personalização de tema
Três temas de editor estão disponíveis:
Ideal para ambientes com pouca luz.
Melhor em ambientes bem iluminados.
Focado em acessibilidade, com contraste máximo.
O tema afeta apenas o editor; o restante da interface segue o tema do sistema.
Executando a análise
Clique em "Analisar" para iniciar o processo. O botão fica desabilitado se:
- Há erros de sintaxe no código
- Uma análise já está em andamento
Durante a análise, um loader é exibido. Em alto nível, o processo passa por:
- Conversão para Árvore de Sintaxe Abstrata (AST)
- Normalização em uma representação intermediária
- Construção de um grafo de fluxo de controle (CFG)
- Análise de loops e recursão
- Cálculo da complexidade e geração dos resultados
Toda a análise é feita localmente no navegador.
6. Entendendo os resultados
Ao final da análise, você verá:
A notação Big O final. O badge é colorido conforme a classe:
Um texto que justifica a complexidade calculada, apontando loops, recursão e padrões relevantes.
Ideias para reduzir a complexidade ou tornar o algoritmo mais eficiente.
- Trocar estruturas de dados
- Reduzir níveis de loops aninhados
- Aplicar dividir e conquistar
- Aproveitar métodos nativos otimizados
- Remover cálculos redundantes
Uma visão geral das classes de O(1) até O(n!), para comparar o seu resultado com outras complexidades possíveis.
7. Cenários comuns
De preferência, envie uma função completa, com parâmetros e return, em vez de apenas o corpo.
Você pode incluir mais de uma função; o analisador considera o fluxo como um todo e foca na parte mais custosa.
Inclua a classe e os métodos relevantes. A análise foca na implementação dos métodos, não nos detalhes de encapsulamento.
Para boa detecção de recursão, mantenha o mesmo nome na definição e nas chamadas. Padrões clássicos (como fatorial) são reconhecidos com mais facilidade.
8. Solução de problemas
Possíveis causas:
- Erros de sintaxe ainda presentes
- Análise em andamento
- Código vazio
userGuide.troubleshooting.buttonDisabled.solutionLabel Corrija os erros, aguarde a análise atual terminar ou adicione código antes de tentar novamente.
Possíveis causas:
- Uso de metaprogramação
- Padrões de código muito abstratos
- Funções muito grandes sem divisão em partes menores
userGuide.troubleshooting.unexpectedComplexity.solutionLabel Tente isolar a função principal, remover detalhes não essenciais e rodar a análise novamente.
Possíveis causas:
- Em JavaScript, os erros vêm do próprio Monaco
- Em Python/Java, validadores específicos podem levar um instante para acusar erro
userGuide.troubleshooting.syntaxErrors.solutionLabel Espere alguns segundos, tente rodar a análise ou reformatar o código para facilitar a detecção.
Em geral, a análise leva milissegundos. Se parecer travada, tente:
- Diminuir o tamanho do código
- Simplificar estruturas muito aninhadas
- Recarregar a página
9. Boas práticas
Prefira funções completas com início, meio e fim claros.
Variáveis como left/right/mid facilitam a identificação de padrões como busca binária.
Imports, wrappers de I/O e detalhes de interface geralmente não são necessários para entender a complexidade.
Use o resultado como apoio para seu próprio raciocínio, especialmente em problemas mais complexos.
Compare o que você esperava de complexidade com o que o analisador retorna e veja onde seu raciocínio pode ser refinado.
Recursos adicionais
Aprofunde seus estudos em algoritmos e Big O: