본문 바로가기
끄적/나만봐

윈도우 프로그램 - 웹페이지 연동3

by iwbap 2024. 11. 26.
728x90

 cpu, 메모리 자원이 한정적인 상황인데 hdd는 충분할 경우, hdd에 파싱 작업을 하고 난 데이터를 저장해서 불러다 쓰는 방법을 적용해봄.
 효과는 굉장히 좋았다. 이미 파싱된 작업 결과를 오로지 렌더링에만 사용하니, 굉장히 빠르게 로딩+ui버벅거림이 단 하나도 없었다.

 버그는 굉장히 많지만 최적화 방향성은 명확해짐. 이대로 가면 될듯.

 

 맨 처음 상태는 대량의 대이터를 불러오면 메모리가 10기가 넘게 차지하면서, 윈도우 프로그램에서 보여주는 웹뷰에서 크래시가 일어남.
 그래서 가상 스크롤 구현으로 메모리를 2~3기가만 사용하도록 적용함. 하지만 이래도 ui버벅거림이 심함. 당시에는 원인을 cpu사용량이 중간중간 급격하게 높아지는 것 때문에 윈도우 프로그램을 최적화 해야한다고 생각했음. 하지만 아니였고, 사실은 렌더링을 할 때마다 파싱작업을 하기 때문이었음. (근데 사실 이것도 정확한 이유를 모름. 그렇다고 믿고싶을 뿐인건가)
 파싱 작업을 최초에 한번만 하고, hdd에 결과값만 저장해두고 바로 불러다 쓰는 방식을 사용하니, cpu점유율뿐 아니라 메모리 점유율도 더욱 낮아짐.
 현재 메모리는 1~1.5기가 정도만 점유하고, cpu는 최초 실행 시, 혹은 업데이트가 이루어질 경우에만 점유율 높아짐. 로그 기록이 업데이트 될 경우에는 어떤 방식으로 파싱작업을 해야할지 최적화 방법을 생각 해봐야 할듯. (윈도우 프로그램에서 로그기록을 한줄한줄 저장할 때, 웹에도 똑같이 전달해서 한줄한줄 파싱해서 바로바로 저장하는 방식으로 가면 될듯)

 휴대폰 서비스 app들이 많이 사용하는 방식인 것 같다. 클라이언트에 스트리밍방식으로 전달하면서 초기 화면을 빠르게 렌더링하고, 결과적으로 렌더링에 필요한 내용들은 모두 클라이언트 기기에 저장을 해두고, 그러고 나면 언제든 대량의 데이터들을 빠르게 렌더링이 가능하게 하는 방식? 최신데이터가 업데이트 될 경우에는 어떤 방식으로 하는지 찾아서 참고해보면 도움될지도.
 프론트는 어렵다. ai로 대체가 되긴 할까?

728x90