Функции времени

Предупреждение, это немного рекурсивно;)

Я ответил на этот вопрос: Python: Как мне получить все элементы в списке до самого длинного элемента?

И после того, как я отправил туда, где еще ответ должен быть быстрее (автор думал, и я тоже). Я пытался рассчитать время для разных решений, но решение, которое должно было быть медленнее, на самом деле было быстрее. Это заставило меня подумать, что с моим кодом что-то не так. Или это так?

import string
import random
import time

def solution1(lst):
  return lst[:lst.index(max(lst, key=len))]

def solution2(lst):
  idx, maxLenStr = max(enumerate(lst), key=lambda x:len(x[1]))
  return lst[:idx]

# Create a 100000 elements long list that contains
# random data and random element length
lst = []
for i in range(100000):
  s = "".join([random.choice(string.letters+string.digits) for x in range(1, random.randint(1,50))])
  lst.append(s)

# Time the first solution
start = time.time()
solution1(lst)
print 'Time for solution1', (time.time() - start)

# Time the second solution
start = time.time()
solution2(lst)
print 'Time for solution2', (time.time() - start)

Обновление

Прежде чем кто-либо скажет, почему я задаю этот вопрос, это новый вопрос. Вопрос больше в том, что я учусь измерять время выполнения ...

5
задан Community 23 May 2017 в 12:21
поделиться