[1. 개요]
알고리즘 문제 풀이 시, 간혹 각 언어 별 I/O 성능을 향상해야만 풀리는 문제가 간혹 있다.
C/C++ 에서는 보통 scanf(), printf() 를 사용하면 되고,
Go 에서는 bufio 패키지를 사용한다.
여기서는 위와 같이 Rust 코드 작성 시 입출력 성능 향상을 위한 방법을 정리한다.
[2. println! 매크로]
println!() output stream lock으로 인해 다소 느리다.
그래서 아래와 같은 방법이 있다고 한다.
- 표준 출력에 대해 미리 lock 을 걸어두고 출력하거나,
- String 을 먼저 만든 뒤, print!() 를 통해 한번에 출력하는 방식
[3. 방법]
표준 입력에 대한 언급은 따로 없고,
가급적 Go 와 비슷한 패턴으로 코드를 작성하고자 아래와 같은 방법을 사용하기로 함.
- 표준입력
=> 표준 입력을 얻는다.
=> 표준 입력에 대해 lock 을 건다.
=> 표준 입력에 대해 BufferReader 를 개방한다.
=> BufferReader 를 통해 입력을 받는다. - 표준출력
=> 표준 출력을 얻는다.
=> 표준 출력에 대해 lock 을 건다.
=> 표준 출력에 대해 BufferWriter 를 개방한다.
=> writeln!() 와 BufferWriter 를 통해 출력 한다.
[4. 벤치 결과]
??
[5. 참조]
https://www.acmicpc.net/board/view/87325
'Rust > 기타 팁' 카테고리의 다른 글
std::process::Command 관련 (0) | 2023.12.26 |
---|---|
ssh2 관련 (0) | 2023.12.19 |
Rust. 프로젝트 구조 (0) | 2023.12.11 |
Rust. 알고리즘 문제 풀이 기본 코드 구조 (0) | 2023.11.07 |
Rust 전역 변수 (0) | 2022.08.25 |