Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-17 00:00
관리 메뉴

nomad-programmer

[Flutter] 성능 개선을 위한 작은 실천 본문

Programming/Flutter

[Flutter] 성능 개선을 위한 작은 실천

scii 2020. 10. 15. 21:52

Flutter 프레임워크를 사용해 앱을 만들 때, Widget 생성시 보통은 new 키워드를 생략하고 사용한다. 

ex) Text('foo');
ex) new Text('foo');

생략해서 사용할 수 있을뿐이지 컴파일 시 컴파일러가 자동으로 new 키워드를 붙여준다. 이것은 컴파일 시간에 진행되는 것이라 문제될 것은 없다.

컴파일 시간에 되는 것이라면 문제 없겠지만 런타임에 그런것이라면 조금 신경을 써야하는 것이 좋다. statefulWidget의 setState() 메소드가 바로 그것이다. 이 메소드는 실행 시간에 UI 전체를 다시 그리는(build) 메소드다. 그래서 소소하게라도 관심을 갖고 코딩을해야 한다.

setState() 메소드를 통해 업데이트가 되어야하는 위젯은 업데이트가 되야겠지만... setState() 메소드는 그것뿐만 아니라 모든 화면의 Widget들을 다시 업데이트 시킨다. 즉, 화면 전체를 재렌더링하는 과정을 거친다. 때문에 변경될 필요가 없는 Widget들까지 다시 build가 되는 것은 비효율적이다. 

다시 렌더링되는 것을 막을 수 있는 것이 있다. 그것은 바로 'const' 키워드이다. const를 사용해서 Widget 생성을 하게되면 앱이 다시 build 될 때 const가 붙은 것은 build 하지 않고 그대로 둔다.

몇 번의 setState() 메소드 호출이라면 상관 없겠지만 지속적으로 setState() 메소드가 호출되는 로직이라면 const를 적극적으로 사용하는 것이 소소하게나마 성능을 개선시킬 수 있는 방법이다.

티끌모아 태산이라고 작지만 그것이 모이면 실행 되는 앱을 버벅거리게 만들 수도...

api.flutter.dev/flutter/widgets/StatefulWidget-class.html#performance-considerations

 

StatefulWidget class - widgets library - Dart API

A widget that has mutable state. State is information that (1) can be read synchronously when the widget is built and (2) might change during the lifetime of the widget. It is the responsibility of the widget implementer to ensure that the State is promptl

api.flutter.dev

Comments