Maison  >  Article  >  développement back-end  >  Meilleures pratiques en matière de performances C# DataSet

Meilleures pratiques en matière de performances C# DataSet

黄舟
黄舟original
2017-02-13 11:56:282220parcourir

Détails de l'optimisation des performances C#

1 Utilisez ItemArray pour implémenter l'affectation par lots de DataRow


.
  • Lors de l'attribution de valeurs à tous les champs de DataRow, l'utilisation de noms de champs pour l'affectation colonne par colonne est inefficace. À ce stade, l’attribution de champs par lots doit être utilisée autant que possible. Vous pouvez utiliser la méthode ItemArray ou rows.Add :

    / 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. Utilisation raisonnable du calcul parallèle de DataTable


  • Le calcul parallèle intégré de DataTable peut utiliser pleinement chaque processeur de l'ordinateur pour optimiser l'efficacité.

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



  • D'après les expériences, lorsque Le calcul parallèle de DataTable est meilleur que le filtrage de sélection et de boucle lors de la sélection de lignes ; les performances sont similaires lors de l'exécution du parcours de lignes.


3. Utilisez ImportRow pour fusionner des tables de données avec la même structure


  • L'utilisation de la méthode Merge peut facilement réaliser la fusion de DataTables, mais l'efficacité de Merge est très mauvaise ; l'exemple est le suivant :

    DataTable[] srcTables = ... ;
    foreach(DataTable src in srcTables )
    {	
    	dest.Merge( src ) ;
    }
  • ImportRow peut également implémenter l'opération de fusion de DataTable, et ses performances sont bien supérieures à celles de Merge. L'exemple de code est le suivant :

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


À suivre


Ce qui précède est le contenu des meilleures pratiques en matière de performances de C# DataSet. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn