我想测量一些 SQL 查询在 postgresql 中的运行时间。使用 BASH 内置时间,我可以执行以下操作:
$ time (echo "SELECT * FROM sometable" | psql)
我喜欢 GNU time,它提供了更多的格式。但是我不知道如何使用管道来做到这一点。为简单起见,我ls | wc
在以下示例中使用:
$ /usr/bin/time -f "%es" (ls | wc)
-bash: syntax error near unexpected token `('
$ /usr/bin/time -f "%es" "ls | wc"
/usr/bin/time: cannot run ls | wc: No such file or directory
如果我不以任何方式对管道进行分组,它不会抱怨:
$ /usr/bin/time -f "%es" ls | wc
0.00s
但显然,这仅测量管道的第一部分,如下一个示例所示
$ /usr/bin/time -f "%es" ls | sleep 20
0.00s
所以问题是使用管道的 GNU Time 的正确语法是什么?