我有一个脚本,它工作得很好,但我想通过使用多线程来加快它的速度。问题是,在不更改大量代码的情况下很难做到这一点。我很想避免使用新的分离范围的工作,但看起来这是不可能的。启动作业也很慢,开始执行需要〜150毫秒。有什么办法可以避免工作,或者至少使这个脚本块按预期工作?(没有双重功能,正确传递参数)
Param(
[int]$arg1 = 2, [int]$arg2 = 3
)
$functionDoSomething = {
function doSomething($inp) {
return $inp + 10
}
}
function doSomething($inp) {
return $inp + 10
}
# time: 1523337 ticks
Measure-Command {
Start-Job -Name Job1 -InitializationScript $functionDoSomething -ScriptBlock {
return doSomething ($arg1 + $arg2)
} -ArgumentList $arg1, $arg2
Wait-Job Job1
$var2 = Receive-Job Job1 # result is 10, so arguements aren't passed correctly, trick with @($arg1, arg2) = the same result
}
# time: 6867 ticks
Measure-Command {
$var3 = doSomething ($arg1 + $arg2) # result is 15
}