파일 쓰기 속도에 관한 질문..!

USB 3.0을 통해 실시간 데이터를받아 파일로 쓰는 작업을 진행중입니다.

빠르면 초당 50~100MByte의 속도로 데이터가 들어오는데
파일 쓰기속도가 따라가지 못하는 것 같습니다.

여러가지 다른 문제들로 인해 속도가 떨어지는건가 싶어
파일쓰는 작업만 쓰레드로 따로 분리하여 더미데이터를 저장해보았는데
초당 20~25MByte밖에 쓰기가 되지 않는 듯 합니다.
(실제 저장된 데이터나 작업관리자를 통해 보이는 디스크 쓰기 속도 등을 보아…)

  • PC환경은 SSD / 작업은 C# 윈폼으로 만들고 있습니다.

  • StreamWriter을 이용하여 write하고 있습니다.

  • StringBuilder를 사용하니 속도가 많이 떨어지는 듯 하여(반복문안에서 작업)
    그냥 StreamWriter의 Write와 WriteLine을 이용해서 바로 파일에 쓰고 있습니다.
    (이렇게 하는게 더 성능이 좋게 나오는 것 같은데 맞나요?)

  • 대용량의 실시간 데이터를 쓰는데 적합한 방법과 / 속도를 알고 싶습니다.

  • 그 외 문제가 될 만한 놓친 부분이 무엇이 있을까요?

:heart:

1 Like

C# 라이브러리를 테스트해본적이 없어 모르겠는데,
그 정도의 속도는 USB2.0 제어신호에 동기된 걸로 보입니다.
물론 USB3.0 을 쓰고 계시니 그럴리야 없겠지만, 속도 자체는 그러네요.

파일에 저장하는 단위의 크기가 SSD 성능에 큰 영향을 미칩니다.
WriteLine 의 단위가 중요한거죠.
4K 미만과 8MB 이상에서 속도차이가 10배 이상 나게 됩니다.

저장 단위 크기를 키워도 그렇다면,
비동기 저장을 시도하셔야겠죠. ( 쓰레드를 만들어서 )

2 Likes

저장크기 단위를 바꿔가며 확인해 보아야겠네요 감사합니다.

1 Like