В Python, len
является функцией, чтобы получить длину коллекции с помощью вызова метода __len__
объекта:Почему функция Python len работает быстрее, чем метод __len__?
def len(x):
return x.__len__()
Так что я бы ожидать прямой вызов __len__()
быть, по крайней мере так быстро, как len()
.
import timeit
setup = '''
'''
print (timeit.Timer('a="12345"; x=a.__len__()', setup=setup).repeat(10))
print (timeit.Timer('a="12345"; x=len(a)', setup=setup).repeat(10))
Но результаты тестирования с вышеприведенным кодом показывает len()
быстрее. Зачем?
возможный дубликат [Профильные исполнения Len (комплект) в зависимости от набора. \ _ \ _ Len \ _ \ _() в Python 3] (http://stackoverflow.com/questions/8778691/profiled-performance-of-lenset-vs-set-len-in-python-3) –
@GamesBrainiac Этот вопрос касается наблюдения * напротив *. – delnan
Кроме того, точка использования 'setup' заключается в том, чтобы обеспечить синхронизацию только того, что вас интересует. Если вы хотите установить время' a' +, чтобы получить длину, это нормально, но вам не нужно У вас есть «настройка». – DSM