프로그래밍 언어별 성능 테스트 결과 (입력)

들어가며

최근 들어 여러 가지 프로그래밍 언어를 사용하면서 기본적인 성능 테스트를 진행하고 있다. 이 글에서 언급했듯이 입출력과 정렬, 연산 등의 수행 시간을 측정 및 분석하려고 한다. 여기에서는 입력 성능 테스트 결과를 적어본다. 참고로 사용 메모리는 측정하지 않는다. 알고리즘의 효율성에 있어서 수행 시간이 가장 중요하고, 메모리 사용량은 언어에 따라 차이가 클 수 있기 때문이다.

테스트 방법

테스트 데이터는 224(=16,777,216)개의 정수가 적혀 있는 파일 2개를 사용하였다. 파일 #1에는 부호 없는 31bit 정수가 적혀 있고, 파일 #2에는 부호 있는 32bit 정수가 적혀 있다. 각 정수는 개행 문자로 구분되어 있다.
테스트는 정수의 개수 N을 입력받아 정수 N개의 XOR 연산 결과를 출력하는 방법으로 진행하였다. 일정 횟수 수행 결과의 평균을 반영하되, 극값 방지를 위하여 상/하위 각각 10%는 제외하였다. 속도가 느린 일부 언어를 고려해서 일정 시간이 지나면 테스트를 멈추도록 구현하였다.

프로그래밍 언어별 테스트 결과

테스트 결과에서 평균 수행 시간은 ms 단위 아래를 버렸다. 만약 표가 완전히 보이지 않는다면 좌우로 밀어보기를 바란다.

(테스트가 완료된 언어의 수행 시간만 기록하였고, 테스트 데이터 및 소스 코드는 추후에 제공할 예정이다.)

언어구현 방법시간
(#1)
시간
(#2)
Cscanf927ms1018ms
Cgetchar420ms504ms
Cfread, 4K Buffer341ms427ms
Cfread, 64K Buffer335ms421ms
Cfread, 256K Buffer335ms420ms
Cmmap254ms325ms
C++std::cin3018ms3201ms
C++ios_base::sync_with_stdio(false); cin.tie(NULL);660ms797ms
C++ios_base::sync_with_stdio(false);734ms851ms
C++cin.tie(NULL);2938ms3111ms
Javajava.util.Scanner5241ms5318ms
Javajava.io.BufferedReader, Integer.parseInt761ms821ms
Python 3int(input())8791ms9114ms
Python 3int(sys.stdin.readline())3824ms4181ms
PyPy3int(input())2478ms2562ms
PyPy3int(sys.stdin.readline())1314ms1421ms
PascalREAD1233ms1333ms
PascalREADLN1249ms1354ms
Kotlin/Nativereadln().toInt()4341ms4411ms
FortranREAD2858ms2935ms
Gofmt.Scanf52784ms67947ms
Rubygets.to_i3817ms4276ms
COBOLACCEPT2467ms2857ms
Common Lispread21105ms22263ms
C#int.Parse(Console.ReadLine())888ms1094ms
SwiftInt(readLine()!)!3111ms3646ms
Rust 2021io::stdin().read_line751ms910ms

테스트 프로그래밍 언어 목록

테스트에 사용한 프로그래밍 언어 목록은 아래와 같다.

  • C (GNU C99, gcc 12.3.0)
  • C++ (GNU C++98, g++ 12.3.0)
  • Java (OpenJDK 17)
  • Python 3 (Python 3.10.12)
  • PyPy3 (Python 3.9.18, PyPy 7.3.15 with GCC 11.4.0)
  • Pascal (Free Pascal 3.2.2)
  • Kotlin/Native (Kotlin/Native: 1.9.22)
  • Fortran (GNU Fortran 12.3.0)
  • Go (go 1.18.1)
  • Ruby (ruby 3.3.0)
  • COBOL (GnuCOBOL 3.1.2.0)
  • Common Lisp (GNU CLISP 2.49.93+)
  • C# (.NET 8.0.200)
  • Swift (swift-5.9.2-RELEASE)
  • Rust 2021 (rustc 1.75.0)

댓글 남기기