因此,Unix 有一个time
命令,可让用户计时他们的代码/其他内容。我想知道 Windows 命令行是否有类似的东西。
另外,我之前问过一个关于 Linux 命令行的问题这里我们可以对 Windows 做同样的事情吗?如果可以,怎么做?
答案1
使用 Powershell
Measure-Command {start-process whateveryouwantexecute -Wait}
根据您的需要编辑@efficiencylsBliss:
Measure-Command {start-process java -argumentlist "whateverargumentisneeded" -wait}
答案2
我使用的是 Win XP,但出于某种原因,timeit.exe
它对我来说不起作用。我找到了另一种替代方案 ptime
::
ptime 将运行任何指定的命令和参数,并以秒为单位测量执行时间(运行时间),精确到 5 毫秒或更高。它是一个自动进程计时器,或用于基准测试目的的程序计时器。
答案3
您可以使用批处理脚本稍微作弊一下......
@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 实例会对性能造成轻微影响,尽管影响很小。
答案4
一些咖啡让我想到了这个:
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:\>