Wpis z mikrobloga

@noisy:

lepszy będzie generator :)


no chyba raczej nie

python -m timeit -n 10000 'data = [[],["Sent"],["Out",],[]]' '[x for x in data if "Sent" in x][0]'
10000 loops, best of 3: 1.58 usec per loop
python -m timeit -n 10000 'data = [[],["Sent"],["Out",],[]]' 'next(x for x in data if "Sent" in x)'
10000 loops, best of 3: 3.09 usec per loop
@tenji: jeżeli nie wiesz na czym ma polegać przewaga generatora, to nie bierz się za pisanie testów wydajnościowych :P

$ python -m timeit -n 10000 'data = ["przed_dupie"]*1000 + ["dupa"] + ["po_dupie"]*1000' '[x for x in data if "dupa" in x][0]'
10000 loops, best of 3: 71.4 usec per loop
$ python -m timeit -n 10000 'data = ["przed_dupie"]*1000 + ["dupa"] + ["po_dupie"]*1000' 'next(x for x in data if "dupa" in
@tenji: Rozumiem, że to żart?! :) Skrajny przypadek, gdzie zbudowanie obiektu generatora zajmuje więcej czasu niż przefiltrowanie wszystkich elementów krótkiej listy. Czas wykonania kodu (1) wzrasta wykładniczo wraz ze wzrostem długości listy, gdzie kod (2) utrzymuje stały czas wykonania. Swoją drogą to Polecam ci %timeit z ipythona. Poza tym, ale masz słabego procka:P