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)를 참고해주세요!