프로그램의 성능, 문제는 도구가 아니라 사람

그동안 프로그램을 짜면서 Qt와 Lazarus의 성능을 계속 벤치마킹하고 있었는데, 어제 최종적으로 결론을 내렸습니다. 결론인즉 프로그램의 성능을 좌우하는건 도구나 언어가 아니라 그걸 쓰는 사람의 역량이더군요. 파스칼이든 C++이든, LCL이든 Qt든 간에 쓰는 사람이 프로그램을 베베 꼬아놓으면 결국 프로그램도 버벅대게 마련이더군요. 이번에 완전히 같은 루틴을 쓰면서 테스트해보니 결과값이 양쪽 모두 1/1000초까지도 거의 동일하게 나왔습니다. 결국 게슈펜스트나 알트아이젠이나 문제는 파일럿이에요(응?).

그래서 저는 그냥 Object Pascal 기반의 Lazarus로 가기로 했습니다. 그동안 계속 Qt로 개발을 수행했지만, 파스칼에 대한 일말의 희망을 놓지 않고 꾸준히 벤치마킹한 결과 프로그래머가 능력이 되면 도구는 말 그대로 도구일 뿐이더군요. 물론 제 자신이 파스칼을 좀 심하게 사랑하는 파스칼빠(….. :P)이기도 하죠. 비록 Qt처럼 말이 안 나올 정도로 풍부한 기능을 제공하지는 않지만, 그런 기능을 훨씬 더 간단하게 구현할 수 있을 뿐더러, 구현 후 속력이 Qt의 속력과 거의 비슷하다는 것을 고려한다면 제게 최적의 개발도구는 Lazarus인 것 같습니다.

Qt는 매우 훌륭한 라이브러리입니다. 개인적으로는 Delphi의 VCL 이후 가장 아름다운 hierarchy라고 생각합니다만, moc으로 대표되는 Qt만의 preprocessing과 기타 구조적인 문제로 인해 3rd party library의 사용에 제약이 발생하는 경우가 있습니다. 그리고 디버깅도 어렵습니다 - 지금 만드는 프로그램도 memory leak이 발생하는데, QString에서 제공되는 함수들로는 이런 문제를 해결할 수 있는 방법이 보이지 않습니다. 수백 MB에 이르는 데이터를 통채로 메모리에 올려서 작업하다보면 32bit에서는 얼마 안 되어 바로 메모리 부족으로 프로그램이 터져버리더군요(…..). 가능하면 메모리 관리자로 바로 접근해서 garbage collection을 수동으로 수행하고 싶은데, Qt는 메모리 관리를 자체적으로 따로 수행하는지라 이것도 실질적으로는 불가능하고….. 좀 답답하더군요.

해서 오늘부터 부족한 기능부터 라이브러리로 만들고 슬슬 작업을 시작해볼까 했는데….. 의욕이 안 섭니다. 귀찮아요. 모든게 다 귀찮아요. 으어어. -o-

어디 의욕과 투지가 끓어오르게 할만한 뭔가가 없을까요.

No comments:

Post a Comment

블로그를 이전합니다

뭐, 이런 작은 변방의 블로그에 관심있으신 분들은 아무도 없으시리라 생각합니다만...... (웃음) 블로그 플랫폼을 블로거에서 dev.to로 옮겼습니다. 새 URL은 아래와 같습니다: https://dev.to/teminian 새로운 거처에서 뵙겠습니...

Popular in Code{nested}