perl - 从 perl 运行/usr/bin/time

标签 perl time

我正在尝试进行一些非常粗略的基准测试,因此我想运行 time来 self 的脚本的命令。我有以下内容:

#!/usr/bin/perl

   use strict;

   my $command = "/usr/bin/time -f \"%U,%S,%E,%P,%K,%M\" ...";
   my $stats = `$command`;
   print "stats: $stats\n";

不幸的是,该命令的结果似乎从未分配给 $stats 。当我执行脚本时,我得到如下内容:

0.15,0.03,0:00.44,43%,0,143808
stats:

所以看起来它运行的是 time命令成功,但打印出值 STDOUT而不是将值分配给 $stats 。当我使用另一个命令时,例如 ls ,它似乎按预期工作。我在这里做错了什么?

最佳答案

time 打印到 stderr。

$ /usr/bin/time -f "%U,%S,%E,%P,%K,%M" echo foo >/dev/null
0.00,0.00,0:00.03,10%,0,2352

$ /usr/bin/time -f "%U,%S,%E,%P,%K,%M" echo foo >/dev/null 2>/dev/null


$

因此只需将 2>&1 添加到您的命令中即可。

关于perl - 从 perl 运行/usr/bin/time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140850/

相关文章:

perl - 我如何检查 Perl 中的数字溢出和下溢情况?

GO解析自定义时间

c++ - c++中两次时间的区别

python - 如果函数花费时间超过 5 秒,则传递该函数

perl - 在 Perl 中将字符串中的十六进制数字转换为负数

perl - 在 directory.pl 第 2 行的 @INC(@INC 包含 : D:/tools/lib .)中找不到 File/Glob.pm

c++ - 提取两个其他模式之间的匹配线

JavaScript Moment.js 错误解析时区

c - 卡住时间以获得相同的随机结果

perl - 如何使用 ModPerl::Registry(mod_perl 处理程序)检测 Perl 中的 Web 脚本是否运行?