Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Python 3.6.6 (default, Jun 27 2018, 13:11:40)
- Type 'copyright', 'credits' or 'license' for more information
- IPython 6.3.1 -- An enhanced Interactive Python. Type '?' for help.
- In [1]: from pybedtools import Interval
- ...:
- ...: my_bedtool = [Interval("X", 0, 100, strand="+") for _ in range(10000)]
- ...:
- ...: print('original')
- ...: %timeit [(chrom, start, end, strand) for (chrom, start, end, _, _, strand) in my_bedtool]
- ...:
- ...: print('* unpacking')
- ...: %timeit [(chrom, start, end, strand) for (chrom, start, end, *_, strand) in my_bedtool]
- ...:
- ...: print('attribute lookup')
- ...: %timeit [(interval.chrom, interval.start, interval.end, interval.strand) for interval in my_bedtool]
- ...:
- ...: from operator import attrgetter
- ...: get_interval_attrs = attrgetter("chrom", "start", "stop", "strand")
- ...: print('attrgetter')
- ...: %timeit [get_interval_attrs(interval) for interval in my_bedtool]
- ...:
- ...: print('dict lookup')
- ...: %timeit [tuple(interval[k] for k in ("chrom", "start", "stop", "strand")) for interval in my_bedtool]
- ...:
- ...: from operator import itemgetter
- ...: print('itemgetter')
- ...: get_interval_items = itemgetter("chrom", "start", "stop", "strand")
- ...: %timeit [get_interval_items(interval) for interval in my_bedtool]
- ...:
- ...:
- original
- 11.4 ms +- 9.65 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
- * unpacking
- 15.4 ms +- 2.22 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
- attribute lookup
- 2.69 ms +- 481 ns per loop (mean +- std. dev. of 7 runs, 100 loops each)
- attrgetter
- 3.35 ms +- 461 ns per loop (mean +- std. dev. of 7 runs, 100 loops each)
- dict lookup
- 12.8 ms +- 2.46 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
- itemgetter
- 4.86 ms +- 1.21 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement