Heim >Backend-Entwicklung >C#.Net-Tutorial >Best Practices für die Leistung von C#-DataSets

Best Practices für die Leistung von C#-DataSets

黄舟
黄舟Original
2017-02-13 11:56:282262Durchsuche

Details zur C#-Leistungsoptimierung

1. Verwenden Sie ItemArray, um die Stapelzuweisung von DataRow zu implementieren


  • Beim Zuweisen von Werten zu allen Feldern von DataRow ist die Verwendung von Feldnamen für die spaltenweise Zuweisung ineffizient. Zu diesem Zeitpunkt sollte nach Möglichkeit die Stapelfeldzuweisung verwendet werden. Sie können die ItemArray- oder rows.Add-Methode verwenden:

    / ds是数据集(DataSet)对象
    DataTable dt = ds.Tables[0];
    DataRow row = dt.NewRow();
    row.ItemArray = new object[] { value1, value2, …, valuen };
    // ds是数据集(DataSet)对象
    DataTable dt = ds.Tables[0];
    dt.Rows.Add(value1, value2, …, valuen);
    //应避免做大量连续的单列赋值,如下:
    DataTable dt = ds.Tables[0];
    DataRow row = dt.NewRow();
    row["col1"] = value1;
    row["col2"] = value2;
    …
    row["coln"] = valuen;

2. Sinnvoller Einsatz der parallelen Berechnung von DataTable


  • Das integrierte Parallelrechnen von DataTable kann jede CPU des Computers voll ausnutzen, um die Effizienz zu optimieren.

    IEnumerable<DataRow> FindRows() //查找所有数量小于0的分录
    {
        DataTable dt = ItemDataTable;
        ……
        return dt.Select(“Quantity<0”); //未使用并行计算
    }
    IEnumerable<DataRow> FindRows() //查找所有数量小于0的分录
    {
        DataTable dt = ItemDataTable;
        ……
        int index = dt.Columns.IndexOf("Quantity");
        return dt.AsEnumerable().AsParallel().Where(dr => (decimal)dr[index] < 0); //使用并行计算:
    }



  • Laut Experimenten, wann Die parallele Berechnung von DataTable ist besser als die Auswahl- und Schleifenfilterung bei der Auswahl von Zeilen. Die Leistung ist beim Durchlaufen von Zeilen ähnlich.


3. Verwenden Sie ImportRow, um Datentabellen mit derselben Struktur zusammenzuführen


  • Mit der Merge-Methode können DataTables problemlos zusammengeführt werden, die Effizienz von Merge ist jedoch sehr gering. Das Beispiel lautet wie folgt:

    DataTable[] srcTables = ... ;
    foreach(DataTable src in srcTables )
    {	
    	dest.Merge( src ) ;
    }
  • ImportRow kann auch die Zusammenführungsoperation von DataTable implementieren und seine Leistung ist viel höher als die von Merge. Das Codebeispiel lautet wie folgt:

    DataTable[] srcTables = ... ;
    foreach(DataTable src in srcTables )
    {
      foreach(DataRow row in src.Rows)
      {
         dest.ImportRow( row ) ;      
      }
    }


Fortsetzung folgt


Das Obige ist der Inhalt der Best Practices für die C#-DataSet-Leistung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn