因此,Unix有一个time
命令,可让用户计时自己的代码/其他时间。我想知道Windows命令行是否有类似内容。
另外,我在这里询问了有关Linux命令行的先前问题。我们可以在Windows上做同样的事情吗?如果是这样,怎么办?
Unable to query system performance data (c0000004)
。我用谷歌搜索,其他人也有完全相同的问题,但是论坛建议没有解决方案。无论如何,谢谢你的建议。有人可以为其他部分提出建议吗?
因此,Unix有一个time
命令,可让用户计时自己的代码/其他时间。我想知道Windows命令行是否有类似内容。
另外,我在这里询问了有关Linux命令行的先前问题。我们可以在Windows上做同样的事情吗?如果是这样,怎么办?
Unable to query system performance data (c0000004)
。我用谷歌搜索,其他人也有完全相同的问题,但是论坛建议没有解决方案。无论如何,谢谢你的建议。有人可以为其他部分提出建议吗?
Answers:
使用Powershell
Measure-Command {start-process whateveryouwantexecute -Wait}
根据您的需要进行编辑@efficiencylsBliss:
Measure-Command {start-process java -argumentlist "whateverargumentisneeded" -wait}
Measure-Command {java test <inputfile> -Wait}
。我得到了与时间有关的统计信息列表,但没有得到代码的输出。难道我做错了什么?
start-process
命令。
Measure-Command {start-process \Python27\python test.py -Wait}
。这将打开一个新的cmd窗口来运行该进程,但是在运行完毕后将其关闭。我也希望看到脚本的输出,那么如何保持窗口打开?
由于某些原因,我使用Win XP timeit.exe
不适用于我。我找到了另一种选择 ptime
:
ptime将运行任何指定的命令和参数,并以秒为单位测量执行时间(运行时间),精确到5毫秒或更短。它是一个自动过程计时器,或用于基准测试的程序计时器。
您可以使用批处理脚本作弊...
@echo off
echo %time% < nul
cmd /c %1
echo %time% < nul
然后运行程序作为此脚本的参数...
计时器myprogram.exe
还有争论...
计时器“ myprogram.exe -sw1 -sw2”
示例输出:
17:59:20.02
some text
17:59:20.03
将批处理脚本放在PATH变量中的某个位置,例如C:\Windows\System32
并命名为timer.cmd
。当然,派生第二个cmd实例对性能的影响很小,尽管很小。
nul
到 echo
?echo
从不读取输入。
cmd /c %1
为cmd /c %*
,以便可以保存命令参数的引号
一些咖啡帮助我想到了这一点:
function time { $Command = "$args"; Measure-Command { Invoke-Expression $Command 2>&1 | out-default} }
如果您不希望其输出任何内容,只需将其替换为out-null即可:
function timequiet { $Command = "$args"; Measure-Command { Invoke-Expression $Command 2>&1 | out-null} }
您可以这样使用它:
PS C:\> time sleep 5
Days : 0
Hours : 0
Minutes : 0
Seconds : 4
Milliseconds : 990
Ticks : 49906722
TotalDays : 5,77624097222222E-05
TotalHours : 0,00138629783333333
TotalMinutes : 0,08317787
TotalSeconds : 4,9906722
TotalMilliseconds : 4990,6722
PS C:\>
为了易于使用,这是巧克力包装:https :
//chocolatey.org/packages/ptime
C:/> choco install ptime
如果ptime
这样做的好处是,它的行为类似于Unix版本并产生控制台输出,Measure-Command { XXX }
但不会(或者至少我不知道该怎么做)。
有两个不同的选项来获取“时间”命令。我的喜好是仅安装Cygwin(与UNIX类似的time
命令一起提供)。
另外,您可以编写一个脚本并将其添加到您的路径中(这样就可以在不指定整个路径的情况下执行它)。
如果您有可用的Powershell,请尝试以下脚本(调用文件-'。exe'等时有效):
$start = get-date
if ($args.length -gt 1) {
start-process $args[0] $args[1..$args.length] -workingdirectory $pwd -nonewwindow -wait
} else {
start-process $args[0] -workingdirectory $pwd -nonewwindow -wait
}
$end = get-date
$elapsed = $end - $start
write-host $end-$start
# datetime format
write-host $elapsed
# easy-to-read format
echo $elapsed
使用(例如)运行代码:
time.ps1 python program.py
使用Batch,我建议从此处(在Stackoverflow.com上)提出最重要的答案之一。两者都只需要复制粘贴。请注意,如果使用paxdiablo的解决方案,则应更换
ping -n 11 127.0.0.1 >nul: 2>nul:
与
%*