2016-11-05 1 views
0

나는 병렬 처리를 테스트하기 위해 java에서 간단한 벤치 마크를 작성하고있다. 프로그램은 총 1000 개의 임의의 바이트를 생성하고 이진 파일에 기록합니다. 그것은 서로 다른 양의 스레드를 사용하여 바이트 생성과 디스크 쓰기를 병렬화하고 각 스레드 수에 대한 전체 프로세스의 실행 시간을 측정합니다. 바이트 배열 파일에이 바이트의 쓰기의 세대 모두 -java 여러 스레드가 동시에 파일에 임의의 바이트 쓰기 [그냥 조언이 필요]

이 프로그램은 스레드의 지정된 중에서 실행의 전체을 분할합니다.

내 문제는 마지막에 단일 바이너리 파일이 있어야한다는 것입니다. 각 스레드가 쓰레기 바이트를 같은 파일에 쓰게하는 것이 가장 좋은 방법에 관한 조언이 필요합니다. 그들이 지금까지 어떤 순서로든 상관하지 않는다는 것을 명심하십시오. 나는 지금까지 세 가지 아이디어를 가지고 있습니다 :

1) 각각의 스레드가 각각 디스크의 동일한 빈 파일을 참조하는 RandomAccessFile 인스턴스를 생성해야합니까? 각 스레드가 겹치지 않는 방식으로 다른 위치에서 시작하여 파일에 쓰도록 하시겠습니까? 이것은 디스크 쓰기를 실제로 병렬화하는 가장 좋은 방법 인 것 같습니다.

2) 어떤 종류의 버퍼링 된 스트림 객체에 대한 참조를 각 스레드에 전달하고 각 스레드가 해당 바이트 배열을이 스트림으로 보낼 수 있습니까? 바이트를 수신하고 파일을받는 순서에 상관없이 즉시 파일에 쓸 객체를 만드는 방법이 있습니까? 단일 객체를 사용하면 모든 바이트를 수집하는 것이 실제로 병렬화 된 디스크 쓰기를 나타내지 않을까 걱정됩니다.

3) 각 스레드가 자체 파일에 바이트를 쓰고 파일을 주 파일로 "병합"해야합니까?

시간 내 주셔서 감사합니다. 자세한 코드 예제가 필요 없으며, 올바른 방향으로 나를 가리키기 위해 약간의 조언을 구하고 싶습니다.

답변

관련 문제