você está aqui: Home  → Arquivo de Mensagens

Metodo curioso de comparação de desempenho.

Colaboração: Fabio Maximo

Data de Publicação: 30 de Setembro de 2005

Uma forma interessante de se comparar o desempenho em maquinas semelhantes é atravez da execução de tarefas iguais.

Muitas são as variaveis que influem no tempo de execução de uma tarefa, e a verdade é que nada se compara a um bom benchmarking, mas um parametro de comparação pode ajudar as vezes. A pesar de nao servir como medida real de desempenho, uma forma curiosa de testar sua maquina é fazer com que ela calcule o numero do Pi. O NUmero Pi - relação entre raio e perimetro da circunferencia - é um numero infinito e não é uma dizima periodica.

Antes de mais nada, como se tratam de formas diferentes de calculo, algoritimos diferentes (quem sabera, o superpi nao é FreeSoftware), bibliotecas diferentes, nao ha sentido algum em se comparar o desempenho de uma maquina windows com uma linux com este metodo.

Mas vamos la.

Se voce tomou a pilula azul: calculando o PI em uma maquina com Windows

Se voce tomou a pilula azul, tera que baixar um SW. Acho que o programa SuperPI servira. O SuperPI teve origem em agosto de 1995, quando foi realizado o calculo do pi com 4.294.960.000 casas decimais usando um supercomputador na Universidade de Tokyo. O programa escrito por D.Takahashi e seu colaborador Dr. Y.Kanada do centro de computação da universidade de Tokyo. Esta marca seria o recorde mundial na epoca. Esse programa foi portado para que PCs com Windows 9X/NT/2000/XP calculem o PI. Realizar o calculo com 33,55 milhoes de digitos, levou 3 dias com um Pentium 90MHz, 40MB de memoria e 340MB de espaço livre no HD. (Informações acima retiradas do Help do Super Pi) Baixe o programa de: http://superpi.radeonx.com/ Atenção: O Programa é Freeware e nao Free Software

Se voce tomou a pilula vermelha: Calculando o calor de PI no Linux

O GNU/Linux é um sistema incrivel e voce provavelmente fara o calculo sem a adição de software algum. Para calcular o valor de PI, usamos o bc com o parametro -l que determina o uso da biblioteca matematica.

O bc é usado para calculos, expressoes numericas e boleanas, e possui uma linguagem propria. Voce pode usa-lo interativamente digitando bc no shell e calculando o que quiser, ou de forma não interativa atravez de arquivos com expressões.

Não é o proposito fazer uma dica sobre o bc - o que alias foi muito bem feito pelo Fernando M. Roxo da Motta em 29/07/2003. vale a pena uma consulta aos "arquivos-l" (http://www.dicas-l.com.br/dicas-l/20030729.php)

No man do bc ha um exemplo interessante que podemos adaptar para nosso teste:

  pi=$(echo "scale=10; 4*a(1)" | bc -l)
  /*Atribui à variavel PI o numero pi com 10 casas decimais.
  O valor da variavel scale é o numero casa decimais. */

Se nao usamos a atribução, mantendo apenas a estrutura entre parenteses, temos o proprio valor do PI exibido na saida.

Agora entra o "time", que é usado para se ter o tempo de execução de um comando. O time chama o comando subsequente e marca algumas informações interessantes sobre o tempo de execução.

Por exemplo:

  #time ls
  
  file1 file2
  
  real    0m0.009s
  user    0m0.002s
  sys     0m0.006s

Recebeu como retorno o (minusculo) tempo que se levou para o ls retornar os arquivos no diretorio corrente - na leitura acima 0m0.009 (zero minutos e 9milesimos de segundo no caso do real). Repare que o time é quem chama o programa que é passado como parametro e nos retorna 3 dados:

  1. do tempo real passado entre a chamada e o término
  2. o tempo e utilização da CPU pelo usuário (a soma de tms_utime e tms_cutime valores em uma struct tms como retornado por times(2)), e
  3. o tempo de CPU do sistema (a soma do tms_stime e tms_cstime valores em uma struct tms como retornado por times(2)).

De acordo com o tipo de tarefa chamada pelo time, havera uma proporção diferente nos valores acima. Ha tambem outras informações que se pode tirar do time - se o mesmo for o GNU time.

Bem, para comparar entao o desempenho de duas maquinas linux calculando o pi com 5000 casas, fica assim:

  time  echo "scale=5000; 4*a(1)" | bc -l

Cuidado com quantas casa decimais voce quer que o calculo seja feito, pois isso representara exponencialmente e nao linearmente mais tempo de processamento.

So de curiosidade, no meu AMD Athlon(TM) XP 2000+ 512 mem. tive os seguintes resultados para o PI com 5000 casas decimais:

  real    1m25.289s / user    1m15.106s / sys     0m0.245s

Com um Intel(R) Xeon(TM) CPU 2.80GHz carregado em produção (Apache+Banco)

  real    1m1.746s / user    1m1.240s / sys     0m0.010s

Agora é a sua vez!! Mate sua curiosidade.



 

 

Veja a relação completa dos artigos de Fabio Maximo

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script