프로그래밍 언어별 성능 테스트 계획

들어가며

필자가 대학교 2학년 때 수강했던 프로그래밍 언어론 과목에서 다양한 프로그래밍 언어를 사용하여 행렬 2개의 곱을 계산하는 코드를 구현하고 이를 비교 분석하는 과제가 있었다. 당시 사용했던 언어는 C, Java, Fortran, Cobol, Common Lisp 등 5개의 언어가 있었다. 과제를 수행하는 데 많은 시간을 들였고, 비록 좋은 결과는 아니었지만 다양한 프로그래밍 언어를 접해보는 계기가 되었다. 이에 따라 다양한 프로그래밍 언어와 방법을 통하여 입력출력, 정렬, 연산 등의 수행 시간을 측정하여 분석하려고 한다.

사용한 프로그래밍 언어

보편적으로 사용되는 C/C++, Java 언어와 과제 수행 당시 사용했던 Fortran, Cobol, Common Lisp 언어는 물론 Python, Kotlin/Native 등 급부상 중인 언어를 비롯하여 Pascal, Go, Ruby 등 다양한 언어를 사용하고자 한다. 같은 언어일지라도 다양한 구현 방법이 있을 수 있다. 가능하다면 여러 가지 방법을 사용하려고 한다.

테스트 환경

테스트는 AWS EC2를 활용하려고 한다. 다양한 인스턴스 유형 중 c7i.large 인스턴스를 선택하였다. T 계열 인스턴스는 가장 저렴하다는 장점이 있지만, CPU 크레딧에 따라 성능이 좌우되므로 비용이 늘어나더라도 컴퓨팅 최적화 유형인 C 계열 인스턴스를 선택하였다. 그중에서 현재 최신 세대이면서 Intel 프로세서를 사용하는 c7i.large 인스턴스를 선택하였다.

물론 AWS Graviton3 프로세서를 사용하는 c7g 인스턴스도 있다. medium 크기가 있고 Intel 프로세서보다 저렴하다는 장점이 있어서 약정을 구매하기도 하였다. 최상의 성능을 위해서는 Intel 프로세서를 사용해야 한다는 생각이 들었다. 시간당 요금이 비싸서 스팟(Spot) 인스턴스로 사용하려고 한다.

운영 체제는 Ubuntu를 선택하였다. 물론 현재 도전하고 있는 리눅스마스터 시험에서는 Red Hat 계열Rocky Linux를 사용한다. Rocky Linux를 AWC EC2에서도 사용할 수 있으나, 패키지 관리 등 운영 방법에 차이가 있고 Ubuntu에 익숙한 필자에게 불편할 수도 있다고 생각되었다.

언어의 개수와 테스트 데이터의 크기를 고려했을 때, 최종 완료 시기는 알 수 없다고 생각되나, 주기적으로 결과를 반영하려고 한다. 시간의 여유가 있을 때 코드 작성 및 테스트를 수행하여 결과를 정리해야겠다.

댓글 남기기