我有一个在msbuild过程中运行的powershell脚本,并通过从日志文件中提取信息来验证一些内容。 该脚本加载2个xml文件,然后根据从日志文件中提取的数据进行一些验证。通常,脚本平均需要1到2秒才能运行。加载xml文件大约需要800毫秒才能运行。由于脚本运行10000次,因此每次都会加载这些xml文件,并增加10000 * .8秒= 8000秒的加载时间。
有没有办法加载这些xml文件一次,然后让脚本使用它们10000次?需要紧急帮助。
答案 0 :(得分:1)
在您的情况下不知道是否可能,但是当您的项目有10.000个组件时,powershell脚本可能会从.csproj文件中提取组件名称和位置,并自行循环它们。这样不仅可以节省您一遍又一遍地加载XML文件的时间,还可以节省加载PowerShell环境10000次的时间。
答案 1 :(得分:1)
我认为你有两个选择:
1)使用除XML之外的东西。如果您不需要更丰富的XML数据描述,那么对于简单的键/值对,可以更快地解析纯文本文件。
2)重构您的构建过程,以便PowerShell控制10,000个组件中的每个组件的MSBUILD。您可以在开头加载这些XML文件,并在任何步骤中根据需要引用它们。
答案 2 :(得分:1)
假设你有一个类似
的powershell脚本params([string]$docPath)
$xdoc = [xml] (get-content $docPath)
// do stuff w/ $xdoc
将其更改为
params([xml]$xdoc)
// do stuff w/ $xdoc