User Tools

Site Tools


enhancementgridperformancea

그리드에서 표현식을 필요한 곳에만 실행되도록 하여 성능개선

<fc #FF0000>요약 :: 콜론(:) 과 세미콜론(;) 을 활용하여 필요한 곳에서만 로직이 타도록 하는것이 좋다.</fc>

20개 컬럼을 가진 그리드에서 1번째,3번째 컬럼에서만 값에따라 셀 배경색을 다르게 적용해야 하는 상황을 가정합니다. 이럴때는 일반적으로 그리드데이터 속성그룹의 bgColor 에 아래처럼 작성됩니다.

#if($colIndex==1)
	#if($value > 100)
		blue
	#elseif($value <= 100 && $value > 80 )
		yellow
	#else
		red
	#end
#elseif($colIndex==3)
	#if($value > 100)
		blue
	#elseif($value <= 100 && $value > 80 )
		yellow
	#else
		red
	#end
#end

우리가 위 내용처럼 적용하고 있지만 이 코드로 인해 그리드 렌더링이 완료되기까지 큰 영향을 미칠 수 있습니다.

위 코드의 문제는 20개 컬럼에서 colIndex가 1 또는 3인지 모두 비교하여 불필요한 로직을 처리하고 있다는 점입니다. 그리고 표현식들이 행으로 반복 실행되므로 컬럼갯수 20 x 행갯수 만큼 실행되니 조금만 화면에 표현할 내용이 많다면 쉽게 그 처리규모가 짐작 될 것입니다.

그러면 아래처럼 바꿔보면 어떨까요?

:#if($value > 100)
	blue
#elseif($value <= 100 && $value > 80 )
	yellow
#else
	red
#end
::
#if($value > 100)
	blue
#elseif($value <= 100 && $value > 80 )
	yellow
#else
	red
#end
::

달라진점은 #if($colIndex==1) 와같은 컬럼인덱스를 비교하는 로직을 빼고 콜론(:)을 사이사이에 끼워넣은 부분입니다.

수정된 내용을 실행한 결과는 아래와 같습니다.

:red::blue::

이렇게 작성했을때는 표현식이 작성된 컬럼 인덱스에서만 표현식이 작동하므로 불필요한 로직 실행이 발생하지 않기 때문에 성능 개선을 얻을 수 있습니다.

enhancementgridperformancea.txt · Last modified: 2012/12/03 09:21 by lakystars