其他人提到的当有疑问时,要计算时间。但是这里需要解释一下:当你比较两个字符串时,算法大致如下:
from 0 to the length of the shortest string
if characters at this position are different
return false
return true
因此,字符串比较的速度完全取决于字符串相等的程度。在您的示例中,您正在将其与"1"进行比较,这是一个单字符字符串。因此,在您的情况下,核心问题是:
if environ["Flag"][0] == "1"[0]
换句话说,它比较单个字节与另一个单个字节。显然,单个比较速度会很快。
在第二种情况下,您将字符串转换为int。这需要一些时间。但是如果我们假设最好的情况,并且标志始终为“0”或“1”,那么可能是这样的:
i = s[0] - ord("0")
然后您比较两个整数。整数占四个字节,而不是一个字节,但在现代芯片上可能没有关系。
但无论如何,这意味着当您比较两个字符串时,您正在进行一次比较。当您转换为int时,您正在进行转换工作,然后进行一次比较。因此,字符串比较更快。
但同样地,这是情境性的。它之所以更快,是因为您正在比较长度为1的两个字符串。比较两个ints具有恒定的速度,但比较两个字符串与较短字符串的长度成正比。
最后,从环境变量中取出标记只需要每次运行执行一次。我们谈论的是您只做一次的几百纳秒的事情。那种规模的差异只值得在运行多次的循环中担心。在这种情况下,不必担心性能,而应担心哪种更易读一些。(可能仍然是字符串比较版本。)