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 saber a média de se executar a.out 5 vezes:
python time-it.py 5 ./a.out
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 <num of runs> <what to run>" 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
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.
page_revision: 1, last_edited: 1238073738|%e %b %Y, %H:%M %Z (%O ago)





