none
parallel.for loop中的linq RRS feed

  • 问题

  • 我在parallel.for loop中用了linq
    Parallel.For(0, 4, op, Sub(iOppInfo, loopState)
                                       Dim r = (From a In listA
                                              Join b In listB
                                               On a.A_FieldA Equals b.B_FieldA
                                              Join c In listC On b.B_FieldB Equals c.C_FieldB
                                       Where (a.A_FieldD.Length < 5)
                                              Select a)
                                       Dim list As New List(Of ClassA)
                                       For Each e In r
                                           list.Add(e)
                                       Next
    然后我运行了性能测试工具(vs自带的),发现了blocked time,在:
    -System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
    --ConsoleApplication3.Module1._Lambda$__7(class VB$AnonymousType_0`2<class ConsoleApplication3.Module1/ClassA,class ConsoleApplication3.Module1/ClassB>,class ConsoleApplication3.Module1/ClassC)
    ---JIT_NewFast(struct CORINFO_CLASS_STRUCT_ *)
     (listA,listB,listC won't be changed during the operation (you can consider it as readonly))
    怎么才能优化掉这部分blocked time呢?
    把listA等做成静态的?
    2011年10月24日 14:27

全部回复