python - 性能 : (Compare string) vs (convert to int)

标签 python

大家好:我是 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/

相关文章:

python - opencv 自动完成不适用于 pycharm

python - 为什么重复列表不是引用而是复制?

转换/展平包含嵌套表作为字典列表结构的 JSON 的 Pythonic 方法

python - 如何将嵌套的 Struct 列展开为多列?

python - "import datetime"对比"from datetime import datetime"

python - 如何禁用pylint禁止自用警告?

python - 使用 python 的聚类图可视化

python - Google App Engine 的排序问题

python - Django - WSGIHandler start_response 并返回响应

python - 同时拟合python参数共享