微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Powershell cmdlet 与 .NET

如何解决Powershell cmdlet 与 .NET

我一直致力于重构一个大型脚本,着眼于提高性能,我发现安静的 .NET 方法通常比等效的 PowerShell cmdlet 更快,有时甚至快得多。所以我已经开始测试,看看我应该在哪里使用 .ENT 以及我不需要打扰的地方。我认为我看到的模式是,当需要大量项目或迭代时,.NET 速度更快,这很有意义。

但是今天我发现自己需要删除一个包含大量子文件夹和这些子文件夹中的项目的文件夹。新 Autodesk 安装程序留下的一些废话。对于刚刚安装的单个 Autodesk 程序,单个 C:\Autodesk\WI 文件夹很容易成为 10GB 和大量子文件夹和文件,并且随着多个程序依次安装,气球增加到 5 倍。因此,似乎是 .NET 更快的好机会。所以我复制了文件夹并尝试了这个......

(Measure-Command {
    Remove-Item 'C:\Autodesk\WI - 1' -Recurse -Force -ErrorAction Stop
}).TotalSeconds
(Measure-Command {
    [System.IO.Directory]::Delete('C:\Autodesk\WI - 2',$True)
}).TotalSeconds

Remove-Item 耗时 0.037 秒。而 [System.IO.Directory]::Delete() 花了 0.045。所以我的第一个问题是...

Microsoft 文档中是否有资源或信息来列举哪些 cmdlet 是高度优化的,哪些更适合用 .NET 替代品替换?

而且,在测试程序方面有什么问题吗?我已经看到,有时第一个测试很慢,所以通常在这样的 A/B 测试中,我会删除 4 个测试文件夹,然后测试 A/B/A/B,以验证第一个慢的 A不是因为是第一个运行的代码。但是因为这里的文件夹太大了我一开始也没在意,结果得到了相反的结果。

最后,我想知道在 PowerShell 中使用 .NET 是否有任何需要注意的问题?当然,这意味着更广泛地使用 Try/Catch/Finally,因为您失去了 PowerShell 的典型 SilentlyContinue 行为,但还有其他什么吗?

编辑:为了尝试从问题中删除任何可能的“意见”,我正在重新表述这些问题,以免任何人感到困惑。所以。 1:是否有资源讨论哪些 cmdlet 已针对其 .NET 等效项的性能进行了优化? (对或错)

2:如果有这样的资源,在哪里可以找到? (链接

3:关于性能分析,是否有返回一致结果的规范测试程序? (对或错)

4:如果有,它是什么(链接代码)。

5:关于在 Powershell 中使用 .NET 调用代替本机 PowerShell cmdlet,是否存在反对这样做的论据,或者需要注意的警告? (链接,因为这里没有人是专家,所以只有指向另一个来源的链接似乎“不是意见”)

请注意,如果您在本次修订之前不理解问题,请不要回答。你没有资格,我不在乎你要说什么。另一方面,如果你有一个很大的头脑并且可以看到最初问题的全部意义,那么请回答新问题,引用你的来源并保持你的(专家)意见,因为上帝保佑专业人士像 Stack Overflow 这样的资源应该屈从于专业的专家意见。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?