对于带有if语句的每个循环-性能

时间:2018-07-31 11:57:32

标签: asp.net multithreading performance c#-4.0

我有一个复杂的对象,并且试图遍历这些对象并添加到另一个列表中。

但是,由于我在循环内没有几个if语句来检查其中的对象是否为null,所以迭代会花费很多时间。另外,我正在遍历约70000个项目。

下面是代码,

var Product = model; //complex object
Parallel.ForEach({model, product => {
    if(product.Type != null)//type a
     {  A = a.Loca;//do something }

    if(product.Type != null)//type b
     {  B = b.Loca;//do something }

   if(product.Type != null)//type c
     {  A = c.Loca;//do something }

   dataAsset.Push(new assetItems(A, B, C));
}
});

我正在尝试提高性能。

2 个答案:

答案 0 :(得分:0)

通过仅检查product.Type!= null是否一次来提高性能。您无需分别检查三遍。即

Parallel.ForEach({model, product => {
    if(product.Type != null)
     {  a;//do something
        b;//do something
        c;//do something 
     }
   dataAsset.Push(new assetItems(a, b, c));
}

答案 1 :(得分:0)

通过使用Elvis运算符,我可以提高性能。