ls증권 dll api 윈도우즈 폼과 WinUi 성능 비교

ls증권의 dll api는 실시간 대이터를 SendMessage로 처리한다. 윈도우즈는 이걸 윈도우 메시지로 처리한다.

윈도우 메시지는 윈도우즈 폼의 경우 WndProc으로 처리하고 WinUi는 win32 api인 SetWindowLong이나 SetWindowSubclass를 이용한다. WinUi의 윈도우 메시지 처리가 더 복잡하다.

성능 차이를 비교해 봤다. WinUi가 더 느릴 거라 예상했다.

코스피와 코스닥 4,700개 정도 되는 종목들 모두에 체결, 호가, 프로그램 매매, 거래원 실시간 이벤트를 작동시켰다. 실시간 대이터를 수신하면 Count++만 했다. 하나의 컴퓨터에 같이 실행하여 9시부터 10시까지 매 초 cpu 사용률과 Count를 ConcurrentQueue로 저장했다. 매인 뜨레드에서 작동하는 타이머는 정확하지 않아서 System.Timers.Timer를 썼다. 10시에 파일로 출력했다.

평균 cpu 사용률은 윈도우즈 폼즈가 2.82% WinUi가 3.25%였다.

처리한 수신 이벤트 수는 전자가 15,210,636 후자가 15,228,651이었다.

wpf로 했을 때처럼 의외다. cpu 부하는 컸지만 더 많은 대이터를 처리했다. 하지만 의미 있게 큰 차이는 아니므로 WinUi로 윈도우 메시지를 처리하면서 윈도우즈 폼즈에 비해 부하가 크거나 놓치는 대이터가 있을까 특별한 걱정은 하지 않아도 될 거 같다.