본인이 만든 프로그램의 초기화 시간은 849ms
짧다면 짧겠지만 그래도 개선의 여지가 있는 게 프로그램이다
코드를 뜯어보니 문제점이 보였다
4번째 줄 loader.load는 File을 읽는 메서드이고, 5~8번째줄은 글자 스타일을 저장된 설정값에서 읽는 메서드이다
그리고 설정값은 당연히 파일을 읽어들여서 처리할 것이고
그런데 사실 두 메서드가 순차적으로 진행될 필요성이 있는 것은 9번째인 스타일을 적용할 때 뿐이고, 1~4번째와 5~8번째는 병렬로 처리할 수 있을 것 같다는 생각이 들었다
그래서 Future를 이용해서 비동기 형식으로 바꿨다
여기까지 해서 글을 썼는데 쓰고보니 Future의 서순이 이상하다
그래 위로 올라왔어야지
이제 시간 측정을 해보면
느려졌다 이기
괜히 뻘짓하지 말고 버그나 잡자..
비용이 더드는게 당연하지
비동기는 마법이 아닌걸 - dc App
프로파일로 어느 부분이 느린지 검사해보셈 - dc App
어엌ㅋㅋ
파일 크기나 설정의 크기를 몰라서 정확하진 않겠지만 비동기보단 병렬이 필요해 보이는데. 그리고 더 뇌피셜로는 저 loader가 결국 병목이지 않을까 싶네
설정파일 로딩 과정에서 파일시스템쪽 부하보다 어플리케이션측 부하가 훨씬 높을거 같은데 그러면 싱글스레드 비동기 해봐야 추가관리비용만 늘어나겠지...
executor를 싱글스레드 말고 멀티스레드로 바꿔서 실험해보면 어떨까 싶음
GUI임? 설정을 비동기로 읽고 그 동안 GUI 초기화를 하던가 다른작업을 하면 빨라지지 않을까
이제보니 했구만 위 댓글들 말대로 프로파일링 해봐야 알 것 같네
이런건 파일을 여러개 읽어야할때 성능이 늘어나지 파일 하나를 비동기로 읽는건 오히려 느림. 근데도 쓰는 이유는 UI 블락막기위해 쓰는거지
느려졌다 이기
비동기는 그냥 병목지점을 바꾸는 것뿐이잖아
해결방법: ssd를 산다
느려졌다 이기 씹ㅋㅋㅋㅋㅋ - dc App
ㅋㅋㅋㅋㅋㅋ - dc App
Notepad++ 극혐이내 ㅡㅡ vscode써라
저게 뭔 npp임? 이클립슨데 눈깔뼜노?