首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PoshRsJob性能问题

PoshRsJob性能问题
EN

Stack Overflow用户
提问于 2017-06-12 17:07:54
回答 0查看 255关注 0票数 0

为什么在PowerShell中使用多线程的速度如此之慢?我做错什么了吗?我正在使用PoshRsJob模块。

RSJobs:

代码语言:javascript
复制
(Measure-Command {

    $output = Start-RSJob -InputObject $shortDump -ScriptBlock {
        Param($out, $shortDump)

        $retObj = [pscustomobject]@{
            UserMail = $_.Mail
            Type = $_.Type
        }
       # return $retObj
       $retObj

    } | Wait-RSJob

    $out.Add( $( Get-RSJob | Receive-RSJob) )
    # $out += $( Get-RSJob | Receive-RSJob )

}).TotalSeconds

标准foreach

代码语言:javascript
复制
(Measure-Command {

    foreach ($obj in $shortDump) {

        $retObj = [pscustomobject]@{
            UserMail =$obj.Mail
            Type = $obj.Type
        }
        # $out+= $retObj
        $out.Add($retObj)
    }
}).TotalSeconds

我的目标是更快地构建对象,因为我有大约300.000个对象要构建。

编辑:这是另一个例子。它太慢了!

快地

代码语言:javascript
复制
$out = New-Object System.Collections.ArrayList
"default"
(Measure-Command {

    for ($x = 0; $x -lt 100000; $x++) 
    {

        $retObj = [pscustomobject]@{
            UserMail = 'test'
            Type =  'test2'
            Test = 'default'
        }
        $out.Add($retObj)
    }

}).TotalSeconds
$out2 = $out

慢得可怕

代码语言:javascript
复制
$out = New-Object System.Collections.ArrayList
$Test = `"RSJobs"`
"RSJobs"

$ScriptBlock = {     

[pscustomobject]@{
    UserMail = 'test'
    Type =  'test2'
    Test = $Using:Test
}
}

(Measure-Command {
    1..100000 | Start-RSJob -Name {$_} -ScriptBlock $ScriptBlock   
    $out.Add( $( Get-RSJob | Receive-RSJob) )

}).TotalSeconds
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44495502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档