2009-11-13 1 views
1

C# 값을 DataRow [ "haswhatnots"] = hasWhatNots에 할당하는 것은 매우 느립니다. hasWhatnots는 부울 값입니다.C# 값을 DataRow에 할당 [ "haswhatnots"] = hasWhatnots가 너무 느립니다.

나는이 라인을 프로파일 링했고 560000 히트로 실행 시간은 82 초이다. 물론 프로파일 러는 성능에 약간의 영향을 미치지 만 성능은 여전히 ​​느립니다!

문제에 대한 모든 힌트 DataRow는 DataGridView.Datasource에 바인딩 된 BindingSource에 바인딩되는 DataTable의 일부입니다.

답변

2

(편집 : 단지 당신이 데이터 바인딩이라는 것을 보았습니다.) 가장 먼저 시도해보십시오. 아마 소스를 null로 설정하고 나중에 다시 바인딩하십시오. BindingSource의 경우 SuspendBinding(), ResumeBinding()ResetBindings()입니다.


진짜 문제는 단지 조회되는 경우, 상기 DataColumn의 스냅 및 사용이 걸릴 수 :이 가장 빠른 경로임을 기억하는 것

// early code, once only... 
DataColumn col = table.Columns["haswhatnots"]; 

// "real" code, perhaps in a loop 
row[col] = hasWhatnots; 

을 (문자열 과부하가 모두 찾습니다 목록에서 DataColumn).

는 또한 -이

bindingSource1.RaiseListChangedEvents = false; 

// stuff the grid 

bindingSource1.RaiseListChangedEvents = true; 

을 시도하고 차이가 있는지 확인 할 수 대신 DataTable ;-p

0

class 모델을 사용합니다.

0

은 매우 늦게 만, 여전히 같은 문제가 있었다

이 극단적 시차, 큰 그리드 (내 규모)에 (60 COLS, 10,000 + 행) 발생하는이었고,이 이하로 CPU 시간의 cutted
DataRow row 

row.BeginEdit(); 
row["haswhatnots"] = hasWhatnots; 
row.EndEdit(); 

그 때까지 1 %였다.