我在文件中有一系列值,我正在迭代它们。 运行速度更快:
if FTB == "0":
do something
或
if int(FTB) > 0:
do something
答案 0 :(得分:1)
只需在IPython中使用%timeit
函数:
FTB = 0
%timeit if FTB == 0: pass
10000000 loops, best of 3: 47 ns per loop
FTB = '0'
%timeit if int(FTB) == 0: pass
The slowest run took 9.47 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 231 ns per loop
如果您打算转换字符串 - >使用int()
即时整数,然后看起来你(相对)相当快的速度输掉了。将FTB
作为int
开始的比较比将字符串FTB
强制转换为整数的比较快近80%。
也许你最初的问题是,简单地比较已经输入的对象(比如已经是int
或str
并且不需要类型转换的东西)是不同的,速度方面,在字符串和整数。在这种情况下,为了完整性:
FTB = '0'
%timeit if FTB == '0': pass
10000000 loops, best of 3: 49.9 ns per loop
FTB = 0
%timeit if str(FTB) == '0': pass
The slowest run took 8.62 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 233 ns per loop
可能需要更多抽样,但天真地说很难说str
与str
与int
与int
之间存在明显的速度差异。最大的成本是调用int()
或str()
函数来更改类型的成本。
答案 1 :(得分:0)
我参加晚会但是这里有一个简单的代码,表明python几乎没有区别。
另外我想到的是整数受到lengt的限制,而字符串可以是任何大小(直到你记忆力不足),这就是我增加大小的原因。
import time
theinteger = 2147483647
thestring = "2147483647"
stringtime = []
integertime = []
for i in range(0,99999):
t0 = time.time()
if thestring == "2147483647":
print("hello")
t1 = time.time();
stringtime.append(t1 - t0)
t0 = time.time()
if theinteger == 2147483647:
print("hello")
t1 = time.time();
integertime.append(t1 - t0)
theinteger = theinteger + 1;
thestring = str(theinteger)
print("time for string: " + str(sum(stringtime)/len(stringtime)))
print("time for integer: " + str(sum(integertime)/len(integertime)))
答案 2 :(得分:-1)
整数比较快,因为在CPU上它只是一个操作。字符串是一组字符的表示。要比较一个String,你必须比较数组中的earch项,直到找到差异。所以这是比较整个String的更多操作。 但差异在几纳秒的范围内。