Powershell:强制转换为字节数组运行无穷大



我有一个4MB的文件,并决定从Powershell加载它,所以执行下面的代码

[byte[]]$bytes = Get-Content $file -Encoding byte

然而,这行代码运行无穷大,似乎没有完成,并且越来越多地消耗大量的RAM内存。 对此有什么建议吗?

如果你使用不带-Raw-Encoding Byte,那么Get-Content会将每个单独的字节写成单独的对象。 Get-Content还向每个对象添加了一些额外的属性。这导致每个对象的内存开销非常大(在我的测试中为 1.4KB+(x64、v5.1((。因此,您需要6GB的内存来加载4MB这样的文件。如果这不适合RAM,那么您将进行大量交换,这使得该过程非常缓慢。使用-Raw Get-Content将整个文件作为单个[Byte[]]读取,这大大减少了每个字节的开销。

最新更新