>  기사  >  백엔드 개발  >  C# DataSet 성능 모범 사례

C# DataSet 성능 모범 사례

黄舟
黄舟원래의
2017-02-13 11:56:282220검색

C# 성능 최적화 세부 정보

1. ItemArray를 사용하여 DataRow 일괄 할당 구현


  • DataRow의 모든 필드에 값을 할당할 때 열 단위 할당에 필드 이름을 사용하는 것은 비효율적입니다. 이때 가능하면 일괄 필드 할당을 사용해야 합니다. 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. ImportRow를 사용하여 동일한 구조의 DataTable을 병합합니다.


  • Merge 메서드를 사용하면 DataTable을 쉽게 병합할 수 있지만 Merge의 효율성은 매우 낮습니다. 예를 들면 다음과 같습니다.

    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 중국어 홈페이지(www.php.cn)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.