C#과 Python(PyQT)로 만들어진 프로그램의 용랑 비교


우선 예전에 C#으로 개발했던 자막 파일 이름 매칭 프로그램인 E.Z Subtitles.

gui도 구현해놨음에도 컴파일 언어라 그런지 네이티브 C언어를 떠올리게 하듯 용량이 1mb도 안합니다.

245KB 가 찍히네요.

 

당연하지만 실행도 아주 빠릅니다.

 

이건 이번 방학때 심심풀이로 만든 파일 정리하는 프로그램입니다.

파일 여러개를 묶어서 폴더로 만들어주는 간단한 프로그램인데 Python 으로 만들었구요.

PyQT5 프레임워크 써서 GUI도 만들고 pyinstaller로 exe로 빌드까지 끝낸 프로그램인데 용량은 아래와 같습니다.

 

37.1MB... PyCharm 가상환경 써서 필요한건 다빼고 exe로 바꾼건데도 용량이 이모양이네요 기능도 별거 없는데 ㅎㅎ;;

아까 만든 C# 프로그램과 약 150배 차이가 납니다.

 

이것에 대한 해결 방법을 알아봤는데 딱히 좋은 솔루션은 없는거 같습니다.

뭐 어쩔수 없는 인터프리터 언어의 한계겠지요.. 제가 알기로 pyinstaller 가 *.py 를 *.exe로 바꾸는 원리도 파이썬 인터프리터와 라이브러리를 전부 때려박아서 exe로 만드는걸로 알고 있습니다.

 

당연히 파이썬 파일을 전부 포함시켜야 되는데 파일도 많아지고 느려질 수 밖에요.

(인터프리터 언어가 원래 느리기도 하구요.)

 

용량을 줄이는덴 단일 exe로 패킹해서 만드는 pyinstaller의 -F 옵션이 유용하긴 하지만 아무래도 사용 라이브러리가 많아질수록 exe 하나로 압축시키면 실행할때 압축을 푸는 시간이 있어서 실행속도가 느려집니다.

 

작은 프로젝트의 경우 체감이 안될것인데 프로젝트가 커졌으면 처음 실행할때 5초 이상을 기다려야 하는 불상사가 생깁니다.

 

그래서 본인의 경우 저렇게 어쩔 수 없이 파일 하나로 만드는걸 포기하고 upx 옵션만 줘서 조금 지저분하더라도 파일을 여러개로 나누어서 pyinstaller 를 사용하고 있습니다.

 

저렇게 하면 일단 main.exe 만 실행해주면 실행은 가능하고 

 

바로가기만 이렇게 밖으로 빼주면 좀 낫습니다. 파이썬의 문법을 사용해서 개발을 하면 C#으로 개발할때보다 몇배는 빠르게 개발을 할 수 있어서 용량이나 퍼포먼스는 살짝 포기하더라도 사용을 하게되는거 같습니다.

 

특히 문자열을 다루는것이나 웹을 파싱하는건 requests, bs4 같은 강력한 라이브러리가 있어서 대체제를 찾기 어렵다 봐도 무방하구요..

일렉트론이란 대체제가 있지만 일단 제 주력이 웹개발이 아니기도 하고 이녀석도 웹브라우저를 때려박는 형식이라 용량 이 파이썬이랑 다를바가 없게 나옵니다. 어떤 프로그램의 경우 pyinstaller로 만든것보다 커지기도 하구요..

 

그래도 VS CODE 같은곳에서 일렉트론을 채택할 정도면 나쁘지 않다고 봐야겠죠.

GUI 프로그래밍을 하면서 참 딜레마에 빠지기도 합니다.

 

C#으로 하자니 쓰레드 구현이나 이런게 힘들어지고, 파이썬으로 하자니 용량이나 실행속도가 마음에 안들고..

뭐가 됬던 항상 편한 '완벽한 언어' 는 없으니깐요..! 

능력 있는 개발자 분들은 무슨 언어를 써도 훌륭한 프로그램을 만드시겠지만 능력이 제한적인 개발자의 고충이였습니다 ㅎㅎ 

COMMENT WRITE

  1. 이 정도로 처이가 나는지는 몰랐네요. 막연히 용량차이가 크다! 라고만 알고 있었는데.... 익숙한? 예상되는? 프로그램의 크기가 34MB 라니요~!!!🤣