Board logo

标题: [原创教程] PowerShell 技能连载 - 加速数组操作 [打印本页]

作者: victorwoo    时间: 2014-7-5 13:41     标题: PowerShell 技能连载 - 加速数组操作

当您频繁地向数组添加新元素时,您可能会遇到性能问题。以下是一个演示这个问题的反例,您应该避免这样使用:

Measure-Command {
  $ar = @()

  for ($x=0; $x -lt 10000; $x++)
  {
    $ar += $x  
  }
}
在循环中,数组用“+=”运算符不断地添加新元素。这将消耗许多时间,因为每次改变数组的大小时,PowerShell 都需要创建一个新的数组。

以下是一个快许多倍的实现方式——用 ArrayList,它专门为大小变化的情况设计:

Measure-Command {
  $ar = New-Object -TypeName System.Collections.ArrayList

  for ($x=0; $x -lt 10000; $x++)
  {
    $ar.Add($x)
  }
}
两段代码实现相同的效果,但第二段效率要高得多。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2