用例
一个简单的函数,用于检查特定字符串是否位于3的倍数位置的另一个字符串中(参见此处的实际示例,在DNA序列中查找终止密码子).
函数
sliding_window:取一个长度为3的字符串将其与搜索字符串进行比较,如果它们相同则向前移动3个字符.
incremental_start:尝试查找搜索字符串,如果找到的位置不是3的倍数,它会尝试在找到的位置后找到下一个位置.
请注意:示例数据只是为了确保每个函数都必须通过完整的字符串,性能与实际数据或随机数据类似.
结果
sliding_window使用incremental_startPython2.7中的函数可以将初始函数提高约39倍.Ubuntu的性能改进略有下降,~34x,~37x,~18x(VM,AWS ,原生的),但仍然在相同的范围内.sliding_window变得比Python2.7慢(Windows上为1.8x,所有Ubuntus上为1.4x,1.5x),但所有Ubuntus的incremental_start性能下降了4,5,1.7(VM,AWS,native)虽然在Windows上几乎没有改变.incremental_start,而速度提高了sliding_window40%.sliding_window函数需要更少的时间来完成(~50%),而incremental_start变得慢了〜2-3倍.问题
码
import timeit
text = 'ATG' * 10**6
word = 'TAG'
def sliding_window(text, word):
    for pos in range(0, len(text), 3):
        if text[pos:pos + 3] == word:
            return False
    return True …