Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cristianoz

Programa para Validação de Códigos

Recommended Posts

Pessoal Bom dia.

 

Gostaria de saber se existe algum programa que eu possa utilizar para realizar a validação do meu código C/C++.

 

A validação que eu me refiro, não é a de sintaxe. mas sim, um programa que analise a "performace" do código, depois de pronto.

 

Por exemplo...se eu precisar fazer uma estrutura de validação de 10 numeros ao invés de eu usar um for (for i < 10; i++). eu fazer 10 if.

O programa me dar uma nota ou algo do gênero. ouvi falar em um programa chamado XPS. Mas nao encontrei nada a respeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

google -> man time

google -> benchmark

 

E obterás a resposta!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom VictorCacciari...

 

Ainda não havia descoberto o que é isso! Ja tinha ouvido falar, mas não sabia bem o que era benchmark...

 

Gostei...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Função time não realiza análise de desempenho nenhuma. E você não pode se basear no tempo de execução p/ dizer se o código é bom ou é ruim. 

 

Se o programa for interativo, o tempo de espera por uma entrada pode ser gigante e você achar que o código não presta.

 

Se o sistema operacional usar fila de prioridades (sem round-robin nem nada) e nela entrar um processo com maior prioridade, seu programa pode ter os seguintes horários:

 

Inicio: 15:00

 

Final: 20:00

 

É bem possível do processo com maior prioridade roubar toda a cpu p/ ele (e os outros do sistema também), deixando o seu programa p/ ser executado por último.

 

Outro caso é num servidor, onde existem vários usuários. Na UFPR normalmente as máquinas da graduação ficam extremamente lerdas porque existem mestrandos desgraçados com senha de root que não sabem o que é compartilhamento de recursos computacionais ou acham que o servidor é o parquinho deles e enfiam um processo com um nice baixo (-20, por exemplo). E daí ninguém da gradução consegue rodar um simulador (ou talvez até logar) porque o cara monopoliza tudo.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isis, sem a menor dúvida que sim!

 

Mas é óbvio que, ninguém vai medir o desempenho de um programa interativo, sem fornecer um input por um pipe ou qualquer coisa do gênero!

E outra, se eu vou fazer um benchmark de um código meu, eu ajustarei o sistema especialmente para isso!

O programa "time" dos unix pode ser usado para medir o desempenho de códigos se for corretamente utilizado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Não é óbvio. Tem gente que faz. Assim como tem gente com mestrado que não consegue entender que é necessário clicar num botão 100x100 escrito "Adicionar Curso" na hora de preencher um currículo online.

 

Favorecer hacks no sistema só p/ dizer que numa configuração específica de um Dual Core com X GB de RAM, Load de 50%, utilizando o algoritmo A de escalonamento de processos e mais algumas configurações bizonhas do sistema operacional e não mencionar o caso médio e pior é fazer pilantragem e não benchmarking. Vários artigos são escritos dessa forma, com dados manipulados p/ favorecer o algoritmo numa situação que dificilmente existe na prática.

 

E a primeira coisa que se ajusta não é o sistema, é o algoritmo. Fizeram uma palestra sobre otimização de código em Java na ufpr (pra variar, não foi nenhum professor de lá). Foi tão gostoso ver o clichê "Java é lento" sendo derrubado com o profiler do Netbeans e reescrita de código p/ utilizar a API corretamente...E o cara não precisou mexer em nenhuma parte do sistema p/ carregar 80MB de texto na memória numa aplicação tosca de busca por palavras. No início levava 5 minutos. A aplicação final carregava instantaneamente.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.