두 개의 텍스트 파일에서 데이터를 읽고 다른 파일에 결과를 저장하는 프로그램이 있습니다. 퍼포먼스 히트의 원인이되는 많은 데이터가 읽고 쓰여지므로 읽기와 쓰기 작업을 parallize하고 싶습니다.파일 읽기 및 쓰기를 병렬화하는 방법
필자의 초기 생각은 처음에는 2 개의 스레드를 쓰고, 처음부터는 하나의 스레드에서 읽기/쓰기를하고, 또 다른 스레드는 파일의 중간에서 읽기/쓰기를 사용합니다. 내 파일은 행이 아닌 바이트 (각 행은 다른 데이터 바이트를 가질 수 있음)로 포맷되므로, 바이트 단위로 탐색하면 나를 위해 작동하지 않습니다. 그리고 내가 생각할 수있는 해결책은 getline()을 사용하여 이전 행을 건너 뛰는 것이고 이는 효율적이지 않을 수 있습니다.
파일의 지정된 줄을 찾는 좋은 방법이 있습니까? 또는 파일 읽기 및 쓰기를 시차 화하기위한 다른 아이디어가 있습니까?
환경 : Win32에서, C++, NTFS, 단일 하드 디스크
감사합니다.
-Dbger
파일 시스템은 무엇이며 어떤 하드웨어를 사용합니까? 컨트롤러/디스크가 하나만있는 경우 병렬 I/O를 수행하는 것이 효율적이지 않을 수도 있습니다. – Anycorn
그렇다면 동일한 디스크에서 읽기/쓰기 만 수행하면 디스크 I/O를 병렬화하면 항상 성능 저하가 발생합니다. –
Dbger : 하드 디스크를 사용하는 경우 예. – Mike