2011-08-31 2 views
0

누구든지 나를 대신 할 수 있습니까? 성능성능에 가장 적합한 것은 어느 것입니까

더 나은 것
foreach (DataRow row in prodStockLevels.Rows) 
    { 
     string stock = row["stpt_Stock"].ToString(); 
     textbox.text = stock; 
    } 

또는

foreach (DataRow row in prodStockLevels.Rows) 
    { 
     textbox.text = row["stpt_Stock"].ToString(); 
    } 

은 데이터 테이블이 큰 경우에도 많은 차이가있을 것입니다. 데이터가 직접 전달되는 경우 성능 향상에 도움이되는지 알고 싶습니다.

답변

4

효율성에서 뚜렷한 차이가있을 수 있습니다 - 모든에 을 존재하는 경우 나, 심지어 측정 있다고 의심한다.

로컬 변수에 할당한다는 사실은 기본적으로 부적절합니다. 표현 row["stpt_Stock"].ToString()의 값은 스택에서 끝나게됩니다. 유일한 차이점은 스택 슬롯에 이름이 있는지 여부입니다.

디버거에서 약간의 추가 영향을 미칠 수 있으므로 측정 할 수있는 차이는 작을 수 있지만 확실히 걱정할 정도는 아닙니다.

나는 실제로 동일한 textBox.Text 속성에 값을 할당한다는 사실에 대해 더 걱정할 것이라고 생각합니다. 마지막 하나만 실제로 관련성이 있습니다. 마지막으로 행을 가져 오는 것이 좋습니다 ...

+0

감사합니다 존, 이것은 아주 좋습니다. 예로서 텍스트 상자 만 사용했지만 감사보다 –

1

차이가 없습니다. 컴파일 후 정확히 동일한 코드 일 것입니다.

1

차이가 없습니다.
다음은 빨리 모두보다됩니다

textbox.text = prodStockLevels.Rows.Last()["stpt_Stock"].ToString(); 
+0

_might_ 감사합니다. 옵티마이 저는 할당 된 값이 사용되지 않고 할당을 완전히 건너 뛸 수 있음을 볼 수 있습니다. 그게 아니라고 말할 필요는 없다. –

+0

@Rune : 속성에 대한 할당을 제거하는 옵티마이 저가 엉망이 될 것이다. 그리고 Text 속성은 일부 논리를 트리거하고 다시 그리기를 수행합니다. –

+0

실제로 부작용이있는 경우 최적화 프로그램은 할당을 제거 할 수 없지만 어쨌든 최적화하기 위해 방금 수행 한 작업이므로 코드가 작동하지 않습니다. –

관련 문제