有时候需要比较两个语句的执行时间,例如 a_list = [i for i in range(100)]
和 a_list = list(range(100))
不知道 timeit
之前我是这样写的:
def test_one(number):
for i in range(number):
a_list = [i for i in range(100)]
def test_two(number):
for i in range(number):
a_list = list(range(100))
if __name__ == '__main__':
start = time.time()
test_one(10000)
end = time.time()
print('{}: {}'.format(test_one.__name__, end - start))
start = time.time()
test_two(10000)
end = time.time()
print('{}: {}'.format(test_two.__name__, end - start))
output
test_one: 0.053299665451049805
test_two: 0.01783156394958496
接触到了 timeit
之后是这样的:
import timeit
lang_one = '[i for i in range(100)]'
lang_two = 'list(range(100))'
print(timeit.timeit(lang_one, 'from __main__ import lang_one', number=10000))
print(timeit.timeit(lang_two, 'from __main__ import lang_two', number=10000))
output:
0.032601056998828426
0.009418976005690638
timeit.timeit()
- 参数
stmt
: 要测试的语句的字符串 - 参数
setup
: 要测试语句的导入语句,from __main__ import lang_one
,正在执行的文件的文件名为__main__
- 参数
number
: 语句执行的次数
测试函数 执行时间把语句改成函数名,导入语句换成函数的导入语句:
def test():
lang_one = [i for i in range(100)]
lang_two = list(range(100))
lang_one = '[i for i in range(100)]'
lang_two = 'list(range(100))'
print(timeit.timeit(lang_one, 'from __main__ import lang_one', number=10000))
print(timeit.timeit(lang_two, 'from __main__ import lang_two', number=10000))
print(timeit.timeit('test()', 'from __main__ import test', number=10000))
print(timeit.timeit(test, 'from __main__ import test', number=10000))
output:
0.03310484399844427
0.009990048994950484
0.04418463000183692
0.04479162200004794