【发布时间】:2020-11-03 07:26:09
【问题描述】:
C++ 中的差异很大,但 Python 中没有。我在 C++ 上使用了类似的代码,结果却大不相同——整数比较比字符串比较快 20-30 倍。
这是我的示例代码:
import random, time
rand_nums = []
rand_strs = []
total_num = 1000000
for i in range(total_num):
randint = random.randint(0,total_num*10)
randstr = str(randint)
rand_nums.append(randint)
rand_strs.append(randstr)
start = time.time()
for i in range(total_num-1):
b = rand_nums[i+1]>rand_nums[i]
end = time.time()
print("integer compare:",end-start) # 0.14269232749938965 seconds
start = time.time()
for i in range(total_num-1):
b = rand_strs[i+1]>rand_strs[i]
end = time.time() # 0.15730643272399902 seconds
print("string compare:",end-start)
【问题讨论】:
-
嗯,有些词换了地方吗?在主题中您问“为什么字符串比较不比整数比较快”,在文本中您说“整数比较比整数比较快 30 倍”。这使得这个问题读起来很混乱。
-
因为 Python 不是 C++? Python 是一种高级语言,您生成的时间取决于诸如循环基于迭代器的 for 循环的实际成本、索引数据结构的成本(这涉及函数调用,这是昂贵的)在 Python 中)。与其他一切相比,实际比较非常小。