2013-07-08 2 views
1

내 프로그램에 대한 성능 테스트가 필요하며 파일에 저장된 일부 데이터에 대한 최악의 IO 액세스 시간을 평가해야하므로이 방법을 평가하는 가장 좋은 방법은 연속 데이터 액세스 및 캐싱 개선을 피하기 위해 이러한 데이터를 서로 다른 HD 섹터에 무작위로 저장하는 것입니다. 필자는이 작업을 수행하는 유일한 방법은 UNIX의 dd와 같이 데이터를 쓰는 섹터를 지정할 수있는 저수준 OS 명령을 사용하는 것이라고 생각하지만 실수가 아니라면이 방법은 안전하지 않습니다. 누군가 이렇게하는 좋은 대안을 알고 있습니까?임의로 인접하지 않은 하드 디스크 위치에 파일 쓰기

추신 : 모든 OS에 대한 모든 솔루션이 작동하지만 유일한 요구 사항은 자바 프로그램을 통해 데이터에 액세스하여 다른 데이터 크기에서 테스트해야한다는 것입니다.

답변

1

내가 RandomAccessFile has .seek() ... 유일한 방법은 몇 가지 낮은 수준의 OS가

없음 명령을 사용하고이 작업을 수행 할 수 있다고 생각 :

final RandomAccessFile f = new RandomAccessFile(someFile, "rw"); 

f.seek(someRandomLong); 
f.write(...); 

을 지금, 그것은 최대 물론입니다 쓰기가 서로 충돌하지 않도록해야합니다.

다른 해결책은 파일을 메모리에 매핑하고 쓰기 전에 버퍼의 위치를 ​​임의의 위치로 설정하는 것입니다.

+0

고맙습니다. "이 오프셋은 파일 끝을 넘어서 설정할 수 있습니다. 파일 끝을 넘어서 오프셋을 설정해도 파일 길이가 변경되지 않습니다." 부분 : P 나는 그것을 지금 시도 할 것이다! –

+0

글쎄, 그 오프셋에서 시작하고 쓰는 한 파일 길이는 변할 것이다;) 자바에서 _ 스파링 가능한 파일을 생성;) – fge

관련 문제