【发布时间】:2014-08-20 13:21:35
【问题描述】:
我复制和粘贴的速度有点过快,然后运行了下面的代码。它基本上将整个服务器冻结了 15-20 分钟。我的输入文件是一个 8 MB 的 xml 文件,其中包含大约 50,000 行文本。
get-content $latestFile.FullName | sort | get-content $latestFile.FullName | sort | out-file -FilePath $latestFile.FullName.Replace(".xml","_Sorted.xml") -Encoding ASCII
get-content $latestFile2.FullName | sort | get-content $latestFile2.FullName | sort | out-file -FilePath $latestFile2.FullName.Replace(".xml","_Sorted.xml") -Encoding ASCII
那么上面的具体是做什么的呢? Powershell 如何或为什么允许您将任何内容通过管道传输到 get-content 或字符串?它是“将行相乘,类似于 SQL 笛卡尔积吗? 为什么它会接管 CPU 和内存?它甚至将远程桌面冻结到服务器,整个 GUI 被锁定,以便您可以使用任务管理器查看发生了什么? Windows 不会只是更慢地处理它,而不是将其所有资源专用于这个愚蠢和意外的错字吗?
这是我打算做的,运行时间大约为 30 秒。
get-content $latestFile.FullName | sort | out-file -FilePath $latestFile.FullName.Replace(".xml","_Sorted.xml") -Encoding ASCII
get-content $latestFile2.FullName | sort | out-file -FilePath $latestFile2.FullName.Replace(".xml","_Sorted.xml") -Encoding ASCII
【问题讨论】:
标签: sorting powershell memory-management cpu-usage