我正在尝试使用下面的命令。每当我使用这个命令时,内存使用率都非常高。有没有办法在完成相同任务的同时降低内存使用率?
Get-ChildItem -Path "C:\" -Recurse |
sort -descending -property length |
select -first 20 fullname, @{Name="Gigabytes";Expression={[Math]::round($_.length / 1GB, 2)}}
我正在尝试使用下面的命令。每当我使用这个命令时,内存使用率都非常高。有没有办法在完成相同任务的同时降低内存使用率?
Get-ChildItem -Path "C:\" -Recurse |
sort -descending -property length |
select -first 20 fullname, @{Name="Gigabytes";Expression={[Math]::round($_.length / 1GB, 2)}}
2条答案
按热度按时间vvppvyoh1#
与你现在所做的相比,这应该是非常有效的,基本上,它利用
SortedSet<T>
Class和一个实现IComparable
和IEquatable<T>
的定制PowerShell Class。匿名函数内部的逻辑确保排序集始终具有最多20个元素(根据需要更改$sorted.Count -lt 20
,这取决于您希望作为结果的文件数量),因此内存使用量应该低得多。mrfwxfqh2#
这里有一个主要是cmd的解决方案,运行时间减半(4分钟对我来说是8分钟),而且没有大量的ram。