我做了这个测试
import time
def test1():
a=100
b=200
start=time.time()
if (a>b):
c=a
else:
c=b
end=time.time()
print(end-start)
def test2():
a="amisetertzatzaz1111reaet"
b="avieatzfzatzr333333ts"
start=time.time()
if (a>b):
c=a
else:
c=b
end=time.time()
print(end-start)
def test3():
a="100"
b="200"
start=time.time()
if (a>b):
c=a
else:
c=b
end=time.time()
print(end-start)
并得到结果
^{pr2}$执行时间相似。的确,使用整数而不是字符串可以减少存储空间,但是执行时间呢?在
对一小段代码的单次执行计时并不能告诉您很多信息。特别是,如果你看一下你的
test1
和test3
中的计时数字,你会发现这些数字是相同的。这应该是一个警告信号,事实上,你在这里看到的只是计时器的分辨率:为了获得更好的结果,您需要多次运行代码,并测量并减去计时开销。Python有一个内置的模块^{} 来完成这项工作。让我们来计算每种比较的1亿次执行时间:
^{pr2}$因此,您可以看到差异并不是很大(在本例中,字符串比较只慢了大约25%)。那么为什么字符串比较慢呢?好吧,找到答案的方法是看看比较操作的实现。在
在Python2.7中,比较是由^{} function in ^{} 实现的。(请在一个新窗口中打开这段代码,以继续我的其余分析。)在第817行,您将看到,如果被比较的对象是同一类型的,并且它们的类结构中有一个} in ^{} ,您将看到它非常简单。在
tp_compare
函数,那么这个函数就被调用了。在整数对象的情况下,会发生这样的情况,函数是^{但是字符串没有} ,后者最多调用^{} (依次尝试三个比较运算符EQ、LT和GT)。这调用^{} ,后者调用^{} in ^{} 。在
tp_compare
函数,因此do_cmp
继续调用^{所以字符串比较比较慢,因为它必须使用复杂的“富比较”基础设施,而整数比较更直接。但即便如此,也没什么区别。在
嗯?由于存储空间减少,需要比较的比特数也减少了。比较比特就是工作,少做工作意味着它走得更快。在
相关问题 更多 >
编程相关推荐