【发布时间】:2018-08-15 02:35:25
【问题描述】:
假设我正在使用 get-childitem c:\*.* -recurse 并且我正在使用它。在管道处理它之前,我必须等待整个 get-childitem 命令完成。有一些例外,例如select -first 2,它会神奇地停止上一个命令。无论如何,有没有办法提高输出,所以它立即写入而不是吸收大量的内存?我的一个想法是......(我知道这行不通,但它让这个想法得到了理解)
[System.IO.File]::ReadLines("$(dir c:\*.* -recurse)")
我知道这是 Windows 的事情,因为 Linux 会在数据一出现时就对其进行处理。但我知道,这是两个不同的世界。
我最担心的是内存使用...
这是一个很好的例子
(1..10000000) | where {$_ -like "*543*"}
这需要我的机器大约 100 秒
在哪里
(1..10000000).where({$_ -like "*543*"})
只用了 25 秒。
【问题讨论】:
标签: performance powershell pipeline memory-efficient