大家好:我是 Stack Overflow 的新手,也是 python 的新手,但我已经编写代码多年,想知道以下哪项性能更好。
假设我已经从 os 加载了 envioron,并且环境中的标志保证为“0”或“1”。
if environ["Flag"] == "1":
do_something
或
if int(environ["Flag"]) == 1:
do something
乍一看,它看起来像转换为 int,然后比较会因为转换而变慢,但是,我知道字符串比较也可能很慢。
有没有人检查过这个?
谢谢,马克。
最佳答案
In [44]: timeit int("1") == 1
1000000 loops, best of 3: 380 ns per loop
In [44]: timeit "1" == "1"
10000000 loops, best of 3: 36.5 ns per loop
转换为 int 总是比较慢,这很有意义,您从一个字符串开始,然后转换为一个 int,而不是仅仅创建一个字符串。
转换是成本最高的部分:
In [45]: timeit 1
100000000 loops, best of 3: 11.9 ns per loop
In [46]: timeit "1"
100000000 loops, best of 3: 11 ns per loop
In [47]: timeit int("1")
1000000 loops, best of 3: 366 ns per loop
使用 a = "1"
创建字符串与使用 a = 1 b = str(1)
是有区别的,您可能会感到困惑`.
In [3]: a = 1
In [4]: timeit str(b)
10000000 loops, best of 3: 135 ns per loop
使用python2.7计时,使用python 3的区别差不多。
输出来 self 的 ipython 终端,使用 ipython magic timeit function
关于python - 性能 : (Compare string) vs (convert to int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28490477/