|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zltzlt 于 2019-12-31 22:11 编辑
来看一段代码:
- >>> count = 10 ** 5
- >>> nums = []
- >>> for i in range(count):
- nums.append(i)
-
- >>> nums.reverse()
复制代码
这段代码只是简单地讲一堆数字添加到一个最初为空的列表中,然后反转该列表。
为了使代码看起来更简洁,我们产生了一个想法:与其到最后才将整个列表反转,不如将数字插到列表的头部。于是,代码可以被精简成这样:
- >>> count = 10 ** 5
- >>> nums = []
- >>> for i in range(count):
- nums.insert(0, i)
复制代码
乍一看这段新代码似乎还挺不错。可是如果你去试试这段代码,就会发现其实速度反而是明显变慢了。
不妨测试一下用时:
- >>> def fun1():
- count = 10 ** 5
- nums = []
- for i in range(count):
- nums.append(i)
- nums.reverse()
-
- >>> def fun2():
- count = 10 ** 5
- nums = []
- for i in range(count):
- nums.insert(0, i)
-
- >>> def test(func):
- start = time.perf_counter()
- func()
- return time.perf_counter() - start
- >>> test(fun1)
- 0.007754699999992454
- >>> test(fun2)
- 1.821296799999999
复制代码
“不测不知道,一测吓一跳”,没想到第二段代码比第一段代码慢了 200 多倍!
所以这时候,我们的选择就会比任何时候都重要。 |
|