본문 바로가기

Rust/기타 팁

Rust io 성능에 대한 고찰

[1. 개요]

알고리즘 문제 풀이 시, 간혹 각 언어 별 I/O 성능을 향상해야만 풀리는 문제가 간혹 있다.

C/C++ 에서는 보통 scanf(), printf() 를 사용하면 되고,

Go 에서는 bufio 패키지를 사용한다.

 

여기서는 위와 같이 Rust 코드 작성 시 입출력 성능 향상을 위한 방법을 정리한다.


[2. println! 매크로]

println!() output stream lock으로 인해 다소 느리다.

 

그래서 아래와 같은 방법이 있다고 한다.

  1. 표준 출력에 대해 미리 lock 을 걸어두고 출력하거나,
  2. String 을 먼저 만든 뒤, print!() 를 통해 한번에 출력하는 방식

[3. 방법]

표준 입력에 대한 언급은 따로 없고,

가급적 Go 와 비슷한 패턴으로 코드를 작성하고자 아래와 같은 방법을 사용하기로 함.

  1. 표준입력
    => 표준 입력을 얻는다.
    => 표준 입력에 대해 lock 을 건다.
    => 표준 입력에 대해 BufferReader 를 개방한다.
    => BufferReader 를 통해 입력을 받는다.
  2. 표준출력
    => 표준 출력을 얻는다.
    => 표준 출력에 대해 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