bash - 这是在循环中使用字符串长度的最有效方法吗?

时间:2017-05-22 19:43:07

标签: bash performance

有人可以确认下面两个代码段中的哪一个具有较低的时间复杂度,或者它们是否相同?

str="a very long string"
i=0
while [ $i -lt ${#str} ]; do
  ((i++))
done

或者,

str="a very long string"
str_len=${#str}
i=0
while [ $i -lt $str_len ]; do
  ((i++))
done

如果您还可以指出任何现有的文档,我将非常感激。

1 个答案:

答案 0 :(得分:2)

计算strlen()一次比每次迭代计算一次要便宜一点。

也就是说,如果您在应用程序中工作,您希望这种差异很重要,那么您就会使用错误的工具来完成工作。 bash根本没有记录/定义运行时性能特征,这些特性通常可以概括为"坏"。