C# DataSet パフォーマンスのベスト プラクティス

黄舟
リリース: 2017-02-13 11:56:28
オリジナル
2224 人が閲覧しました

C# パフォーマンス最適化の詳細

1. DataRow のすべてのフィールドに値を割り当てるときに、列ごとにフィールド名を使用して、ItemArray を使用します


  • 割り当ては非効率的です。現時点では、可能な限りバッチ フィールド割り当てを使用する必要があります。 ItemArray または 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. DataTable の並列計算の合理的な使用方法


  • DataTable 内蔵の並列計算により、各 CPU を最大限に活用できます。最適化のためのコンピュータの効率の役割。

    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); //使用并行计算:
    }
    ログイン後にコピー



  • 実験によると、DataTable で行を選択する場合、並列コンピューティングは選択およびループ フィルターよりも優れており、行トラバーサルを実行する場合のパフォーマンスは同等です。 3

    DataTable[] srcTables = ... ;
    foreach(DataTable src in srcTables )
    {	
    	dest.Merge( src ) ;
    }
    ログイン後にコピー

ImportRow は DataTable のマージ操作も実装でき、パフォーマンスは Merge よりもはるかに高くなります。コード例は次のとおりです。

DataTable[] srcTables = ... ;
foreach(DataTable src in srcTables )
{
  foreach(DataRow row in src.Rows)
  {
     dest.ImportRow( row ) ;      
  }
}
ログイン後にコピー


4. 続きます
  • 上記は、C# DataSet のパフォーマンスのベスト プラクティスの内容です。その他の関連内容については、注意してください。 PHP 中国語 Web サイト (www.php.cn)!
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート