cześć mirko, mam dwie funkcje jak poniżej. chcę sprawdzić która jest bardziej wydajna, jak mogę to zrobić kiedy funkcje potrzebują podania parametru? myślałem żeby zmierzyć czas z pomocą modułu timeit ale nie wiem jak zrobić żeby przy mierzeniu czasu wywolac obie funkcje tymi samymi parametrami (które bym wczesniej przygotowal funkcją jakąś np) #python #naukaprogramowania
@jakuzii: chodzi Ci o coś takiego? co nie działa tak jak byś chciał?
from timeit import timeit import itertools
f1 = """\ import itertools PARAMS = ('ABCD','1234') def one(s): return map(''.join, set(itertools.permutations(s))) for param in PARAMS: one(param)"""
f2 = """\ import itertools PARAMS = ('ABCD','1234') def two(s): return list(''.join(p) for p in set(itertools.permutations(s))) for param in PARAMS: two(param)"""
@jakuzii najlepiej zmierzyć n wykonań funkcji i wyliczyć z tego średnia czasu. Czas wykonania funkcji zależy od wielu zmiennych. Poszukaj sobie na YT o tym
#python #naukaprogramowania
def one(s):
return map(''.join, set(itertools.permutations(s)))
def two(s):
return list(''.join(p) for p in set(itertools.permutations(s)))
PARAMETERS = []
for param in PARAMETERS: funkcja(param)
endtime = datetime.now() - start_time
ale po co ci sprawdzac ktora jest wydajniejsza? roznice beda marginalne
print(f'Time for the for solution 1: {timeit(one)}')
print(f'Time for the for solution 2: {timeit(two)}')
chodzi Ci o coś takiego? co nie działa tak jak byś chciał?
from timeit import timeit
import itertools
f1 = """\
import itertools
PARAMS = ('ABCD','1234')
def one(s):
return map(''.join, set(itertools.permutations(s)))
for param in PARAMS:
one(param)"""
f2 = """\
import itertools
PARAMS = ('ABCD','1234')
def two(s):
return list(''.join(p) for p in set(itertools.permutations(s)))
for param in PARAMS:
two(param)"""
print(timeit(f1))
print(timeit(f2))
https://dev.to/po5i/python-decorator-to-measure-function-s-execution-time-4d26