Echo语句在多大程度上降低了Bash脚本的速度?

2020-07-28 14:18:32

我试图优化一个bash脚本,不知道有多少回显语句会减慢它的速度,所以我做了几个测试。我特别想知道,与完全删除ECHO语句相比,在ECHO语句之前添加详细检查是否会对运行时产生重大影响。

我使用此脚本运行基准:export TIMEFORMAT=%R Verbose=1 ECHO=foo ECHO=01234567890123456789012345678901234567890123456789 for i in{1..10};do time(for i in{1..10};do[[Verbose-eq1]]&;&;ECHO$ECHO;Done>;/tmp/file.log)2;>;foocheckTrue.log时间(对于{1..1000000}中的i);do[[Verbose-eq0。ECHO$ECHO;Done>;/tmp/file.log)2>;>;foocheckFalse.log时间(对于{1..1000000}中的i;Do Echo$ECHO;Done>;/tmp/file.log)2>;>;foonoCheck.log时间(对于{1..1000000};Do:;Done)2>;foonoPrint.log完成。

在对长的ECHO语句进行基准测试时,我将ECHO设置为01234567890123456789012345678901234567890123456789,在对短的ECHO语句进行基准测试时,我将其设置为FOO。

不同的选项在运行时有显著差异。检查冗长和不打印平均花费的时间是根本不打印的1.5-1.7倍!在决定我的bash脚本真正需要哪些echo语句时,我绝对考虑到了这一点。

值得注意的是,此基准基于回显到文件。通过向控制台回显,打印选项所需的时间会长得多。