import timeit print(timeit.timeit(setup=''' from string import ascii_letters def get_substrings_horizontal(string): strlen = len(string) o = 0 # number of iterations done inc = 1 # increment the offset at each iteration results = [] while o <= (strlen*(strlen+1)/2)-1: s = 0 # from this string's idx e = 0 # to this string's idx for x in range((strlen+1)-inc): results.append([string[s:e+inc], s, e+inc, inc, o]) s += 1 e += 1 o += 1 inc += 1 ''', stmt='get_substrings_horizontal(ascii_letters)', number=10000)) print(timeit.timeit(setup=''' from string import ascii_letters def get_substrings(string): strlen = len(string) o = 0 results = [] for s in range(strlen): for e in range(s+1, strlen+1): o +=1 results.append((string[s:e], s, e, o)) ''', stmt='get_substrings(ascii_letters)', number=10000))