2014-03-12 2 views
0

리눅스에서 2 개의 압축 라이브러리 간의 성능 비교를 시도하고 있습니다. 둘 다 파일을 가져 와서 압축 한 다음 출력 파일에 씁니다.리눅스에서 성능 비교

압축에만 관심이 있으니 필자의 비교를 위해 파일 I/O 오버 헤드를 제거하고 싶습니다.

나는이

cat <source file> > my_compression_program /dev/null? 

난 그냥 시작과와 나의 비교 프로그램에 타임 스탬프를 추가 할 수 있습니다. cat은 파일을 메모리로 읽으므로 IO 오버 헤드가 없어야합니다.

내 이해가 정확합니까?

감사합니다.

답변

1

아니요!

cat은 방출하기 전에 전체 파일 내용을 메모리에 버퍼링하지 않습니다. 대신 내부 버퍼 크기에 따라 결정된 청크로 내용을 읽고 씁니다.

cat source_file > /dev/null; my_compression_program <source_file> /dev/null 

이 발생합니다 :

당신이 당신의 성능 벤치 마크에서 디스크 I/O 오버 헤드를 제거 할 경우

, 나는 당신이 당신의 벤치 마크를 시작 전에 충분한 RAM 다음 cat /dev/null 에 파일을 가지고 제안 먼저 프로그램을 실행하기 전에 커널의 파일 시스템 캐시에 파일을 삽입해야합니다. 그런 다음 메모리에서 스트리밍됩니다.

0

libs에 정말로 파일 핸들이 필요한 경우 tmpfs (OS와 같은 * nix에서)를 사용할 수 있습니다. 그렇지 않다면 테스트 프로그램은 파일을 읽음으로써 메모리를 초기화하고 압축해야합니다. 두 경우 모두 테스트를 위해 스와핑을 끄는 것을 고려해야합니다.