최근에 네트워크 드라이브에서 큰 파일을 읽는 데 문제가 있었으며 잘못하고있을 수 있습니다. 나는 C++ (Unmanaged)와 C# 둘 다 시도해 보았고 둘 다 똑같은 공연을했다. 다소 심했다.네트워크 드라이브에서 전체 파일 읽기 빠른 방법 (Windows, C/C++, C#, ...)
가끔 네트워크에서 파일을 4KB/s로 읽지 만,이 파일이 로컬 HD에 있으면 HD가 출력 할 수있는 최대 데이터 속도를 쉽게 얻을 수 있습니다. 그것은 한 번에 64KB 덩어리를 읽는 것입니다 ... 나는 더 큰 버퍼를 미친 숫자까지 시도 했었습니다, 또는 더 작 았고 많은 차이를 만들지 않았습니다.
비동기 I/O는 C#에서 BeginRead를 사용하고 C++에서는 OVERLAPPED IO를 사용하고 동기 읽기는 시도했지만 네트워크에서 느린 동일한 문제가있었습니다.
우리가 생각해 낸 유일한 해결책은 실제로 파일을 읽기 전에 로컬 HD에서 OS CopyFile 기능을 사용하여 파일을 복사하는 것이지만이 방법에 너무 만족하지는 않습니다. 그것은 단지 CopyFile이 우리가 접근하는 것보다 믿을 수 없을 정도로 빠르다는 것을 우리가하지 않는 것처럼 보이고 있습니다.
누구에게이 이유에 대한 단서가 있습니까?
감사합니다,하지만 불행히도, 심지어는 Win32 CopyFile 수 기능이 무엇보다 여전히 빠른이 플래그와 나는를 CreateFile과 ReadFile을을 사용하여 올 수 ... 파일을 복사하고 CopyFile만큼 빠르지는 않습니다. (심지어 내 로컬 HD에도 아무 것도 쓰지 않고도!) 복제 할 수없는 CopyFile 내부에서 무슨 일이 일어나고 있는지 확실하지 않습니다. 로컬 HD에서 파일을 읽는 것은 항상 빠르지 만, 네트워크 드라이브가 아닌, CopyFile이 빠른 경우도 있습니다. –