input과 sys.stdin.readLine 간 속도 차이가 나는 이유에 대해 간단히 적어둔다.
Python 2.X
Python 2에서 사용자 입력을 처리하기 위한 함수는 input과 raw_input이 존재하며, 그 기능은 아래와 같다.
- input : 입력 받은 값을 evaluate하여 적절한 자료형으로 초기화하여 반환한다.
- raw_input : 입력 받은 값을 문자열로 반환한다.
따라서 입력 받은 값을 별도 처리하여 저장하는 input 함수가 상대적으로 느리다.
그렇다면 Python 3에서도 동일할까? 그건 아니다.
Python 3.X
Python 2에서 사용자 입력을 처리하기 위한 함수 중 raw_input은 삭제되었고, input이 raw_input을 대체하게 되었다.
즉, Python 3의 input과 sys.stdin.readLine 모두 입력 받은 값을 문자열로 저장한다. 하지만 input이 sys.stdin.readLine 보다 상대적으로 느린데, 그 이유는 아래와 같다.
이유
- input은 호출 시 전달받은 prompt message을 출력한 뒤, 사용자의 입력을 기다란다. 반면 sys.stdin.readLine는 prompt message를 매개변수로 받지 않느다.
- input 함수는 입력 받은 값에서 개행 문자를 제거한 결과를 반환한다. 반면 sys.stdin.readLine는 개행 문자를 포함한 입력 받은 값은 반환한다.