2013-10-28 23 views

回答

3
1..100 | Where-Object {$_ % 3 -eq 0} 
2

我猜想,“最有效”的方法是使用一个普通的老for循环:

for($i=3; $i -le 100; $i +=3){$i} 

虽然这不是很优雅。你可以创建一个函数:

function range($start,$end,$interval) {for($i=$start; $i -le $end; $i +=$interval){$i}} 

时序这对你的方法(使用其他答案的更简练版):

# ~> measure-command {1..100 | Where-Object {$_ % 3 -eq 0}} 

Days    : 0 
Hours    : 0 
Minutes   : 0 
Seconds   : 0 
Milliseconds  : 7 
Ticks    : 76020 
TotalDays   : 8.79861111111111E-08 
TotalHours  : 2.11166666666667E-06 
TotalMinutes  : 0.0001267 
TotalSeconds  : 0.007602 
TotalMilliseconds : 7.602 

# ~> measure-command{range 3 100 3} 

Days    : 0 
Hours    : 0 
Minutes   : 0 
Seconds   : 0 
Milliseconds  : 0 
Ticks    : 6197 
TotalDays   : 7.1724537037037E-09 
TotalHours  : 1.72138888888889E-07 
TotalMinutes  : 1.03283333333333E-05 
TotalSeconds  : 0.0006197 
TotalMilliseconds : 0.6197 
+0

是啊,我把高效是指人类和机器之间的平衡。 我在这里博文讨论循环时间。 http://www.dougfinke.com/blog/index.php/2009/02/20/powershell-four-for-loops-and-their-timings/ –

相关问题