Fazendo Benchmarks em Python

Um pequeno script que fiz em python. Para usá-lo, rode:

python time-it.py <número de vezes> <comando>

Por exemplo, para a continuação do artigo sobre optimizações eu usei várias vezes alguma coisa como:

./time-it.py 5 ./tree example.cfg

Ele calcula o tempo que demorou para executar o comando e depois calcula uma média aritmética e uma média desconsiderando o valor mais alto e o mais baixo.

O código:

#!/usr/bin/env python
import time
import sys
import subprocess
import math

if len(sys.argv) < 3: print "time-it.py
exit()

runs = int(sys.argv[1])
command = sys.argv[2:]

def mean(lst):
global runs
return (math.fsum(lst) / float(runs))

def san_mean(lst):
global runs
lst.sort()

return (math.fsum(lst[1:-1]) / float(runs-2))

time.sleep(2)

count = 0
timing = []
while count < runs: t1 = time.time() subprocess.call(command) t2 = time.time() timing.append(t2-t1) count += 1 time.sleep(1) count = 0 print " ".join(command) while count < runs: print "%g" % timing[count] count += 1 print "mean: %g" % mean(timing) print "sanatized mean: %g" % san_mean(timing) print #linha em branco [/sourcecode] Pode-se questionar a necessidade dos sleeps, mas fiz assim para que o processo de carregar o python não interferisse nos resultados, e para que uma execução não interferisse na outra.

Publicidade

Uma resposta para “Fazendo Benchmarks em Python

  1. Pingback: Notas sobre optimizações II: O código « Aletéia

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: