有人可以确认下面两个代码段中的哪一个具有较低的时间复杂度,或者它们是否相同?
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
如果您还可以指出任何现有的文档,我将非常感激。
答案 0 :(得分:2)
计算strlen()
一次比每次迭代计算一次要便宜一点。
也就是说,如果您在应用程序中工作,您希望这种差异很重要,那么您就会使用错误的工具来完成工作。 bash根本没有记录/定义运行时性能特征,这些特性通常可以概括为"坏"。