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

黄舟
Freigeben: 2017-02-13 11:56:28
Original
2215 Leute haben es durchsucht

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;
    Nach dem Login kopieren

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); //使用并行计算:
    }
    Nach dem Login kopieren



  • 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 ) ;
    }
    Nach dem Login kopieren
  • 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 ) ;      
      }
    }
    Nach dem Login kopieren


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)!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage