은 내가 어떤 값을 채울처리량은
byte[] b = new byte[10];
byte[] b1 = new byte[1024*1024];
같은 배열이 다릅니다. 내가 시간을 사용하여 (이 두 배열의 처리량을 계산하려고하면
for(i=0;i<10;i++){
b[i]=1;
}
for(i=0;i<1024*1024;i++){
b1[i]=1;
}
그런 다음 나는 RandomAccessFile에로를 작성하고 사용하여 동일한 배열로 해당 파일에서 다시 읽어
randomAccessFile.write(arrayName);
and
randomAccessFile.read(arrayName);
을 말 다양한 크기 (10 바이트 및 1Mb)의 파일 읽기 및 쓰기에 대해 계산 된 경우, 처리량은 1MB 배열보다 많습니다.
Sample Output:
Throughput of 10kb array: 0.1 Mb/sec.
Throughput of 1Mb array: 1000.0 Mb/sec.
왜 이런 일이 발생합니까? 쿼드 코어 프로세서가 장착 된 인텔 i7이 있습니다. 내 하드웨어 구성이 이에 책임이 있습니까? 가능한 이유가 무엇이 아닌가?
저는 실제 전문가가이 질문에 대답하기를 기다리고 있습니다. 그 이유는 I/O가 일반적으로 청크에서 수행되기 때문입니다. 귀하의 10kb 어레이는 예를 들어 한 개의 512kb 청크에 들어 맞습니다. 즉, 512kb 어레이로 쓰는 데 많은 시간이 걸리므로 저장 장치 당 속도가 더 낮습니다. –
처리량을 어떻게 계산합니까? –
처리량을 청크/소요 시간으로 계산합니다. 여기서 청크 = (1 * 10)/1024; 10KB. 1 MB의 경우 청크 = 1; – Prasanna