파일 본문에서 특정 패턴을 찾으려면 디스크의 파일 트리를 통과해야하는 간단한 Java 응용 프로그램을 고려하십시오.파일에서 텍스트 패턴을 찾는 다중 스레드 접근 방식
멀티 스레딩을 사용하면 더 나은 성능을 얻을 수 있습니다. 예를 들어 새 폴더를 찾으면 고정 된 ThreadPool에서 새로운 Runnable을 제출합니다. Runnable 작업은 새 폴더 등을 찾기 위해 폴더를 통과해야합니다. 제 생각에는이 작업은 CPU 바인딩이 아닌 IO 바인딩이어야하며 새 스레드를 생성하면 성능이 향상되지 않습니다.
하드 드라이브 유형에 따라 다릅니 까? (HDD 등 ...) OS 유형에 따라 다릅니 까?
IMHO 유일한 것은 파일 본문에서 패턴을 찾기 위해 파일 내용을 구문 분석하기위한 새 스레드를 생성하는 것입니다.
이 문제를 해결하기위한 일반적인 패턴은 무엇입니까? 다중 스레드 또는 단일 스레드 여야합니까?
이다 적지 물질 (당신이 SSD를 사용하지 않는 경우 즉,), 그래서 여기에 멀티 스레딩을 사용하는 이점은 없습니다. 두 파일의 경우 병렬로 읽으면 OS가 파일 1을 읽은 다음 파일 2를 찾은 다음 파일 2에서 읽은 다음 다시 읽어야합니다. – fge
왜 사용하지 않으시겠습니까?파일 버퍼에서 패턴을 검색하면 꽤 CPU 집약적 인 것처럼 들립니다. 기존의 하드 디스크를 사용하는 시간은 실제로 디스크를 네트워크로 연결하는 경우 더 작은 문제입니다. 하나의 버퍼에 대한 탐색 시간이 다른 버퍼의 패턴을 스캔하는 것과 병행하여 실행되면 합리적인 향상이 될 것입니다. 그것을 내고 무엇이 일어나는가를보십시오! 그것이 더 좋든, 더 나쁠 지 알려주십시오. –