2010-06-15 8 views
2

큰 파일을 한 번 읽으면 더 빨리 열거 나 (또는) 크기가 합쳐진 작은 파일을 큰 파일과 열거 나 더 작은 파일을 하나씩 목록에 수동으로 불러 와서 여는 중입니다.어느 것이 더 빠릅니까?

더 빠르다 ?? 그 차이는 내 프로그램에 영향을 줄만큼 충분히 커요 ?? 30 초 미만의 총 시간 차이는 무시할 수 있습니다.

+0

이 질문은 python과 관련이 있으며, 좀 더 일반적인 용어로 궁금합니까? – azatoth

+1

여러 파일을 열거 나 닫으면 여러 파일 열기 메서드/함수가 강제로 호출됩니다. 하나의 큰 파일을 말하지만 얼룩은 말합니다. – Mike

+1

두 가지 구현을 측정 할 때 무엇을 배웠습니까? –

답변

6

데이터가 사용 가능한 메모리에 맞는지에 따라 다릅니다. 페이징 또는 가상 메모리를 사용해야하는 경우 하나의 거대한 파일을 여는 것이 더 작은 파일을 여는 것보다 느려질 수 있습니다. 계산이 필요한 경우 물리적 RAM에 맞지 않는 중간 변수가 생성되는 경우에도 더 많은 사실입니다.

따라서 파일이 인 경우이 크지 않다면 하나의 여는 속도는 빠르지 만 그렇지 않은 경우 여는 속도가 더 빠를 수도 있습니다.

마지막으로, 많은 여는 작업을 수행 할 수있는 경우 병렬 처리하고 여러 프로세스에서 여러 부분을 처리 할 수 ​​있으므로 작업이 빨라질 수 있습니다.

+0

내가 말하려고했던 것, 빨리 입력하지 않았어. – BenV

+0

당신이 그들을 병렬로 실행하는 방법을 제안 할 수 있습니다. 코드에 추가 할 내용이 있습니까? – kaki

+1

음, "캐싱에 의지"를 쓸 때 "페이징/스와핑에 의지"를 의미합니까? –

2

동일한 양의 데이터를 읽는 경우 분명히 하나의 열기와 닫기가 n보다 빨리 열립니다. 또한 단일 파일을 읽을 때 사용하는 I/O 클래스는 버퍼링 등을 활용할 수 있으므로 훨씬 더 빠릅니다.

+0

저는 이것이 단순하지 않다고 생각합니다. 제한된 리소스 (즉, RAM)와 다중 프로세서를 사용하여 컴퓨터에서 작업한다는 것을 잊었습니다. – PierreBdR

+1

@PierreBdR - 질문은 일반적인 질문이었습니다. 병렬 처리 나 다른 고급 알고리즘 등을 사용하여 n 파일을 효율적으로 처리하는 방법이 아니 었습니다. 이것이 내가 대답하려고 시도한 것입니다. 리소스가 제한된다는 사실을 잘 알고 있습니다. 기계에. 왜 내 대답에 문제가 있는지 모르겠습니다. – dcp

0

단일 파일로 작업하는 것이 거의 확실합니다. 두 경우 모두 동일한 양의 데이터를 읽어야하지만, 여러 파일로 작업 할 때 훨씬 더 많은 하우스 키핑 작업으로 인해 작업 속도가 느려집니다.

또한 최대 속도까지 디스크 버퍼를 사용하여 디스크가 처리 할 수있는 최대 속도로 단일 파일에서 데이터를 읽을 수 있지만 여러 파일의 경우 디스크 헤드가 파일에서 점프하는 더 많은 춤을 수행합니다. 파일.

1

파일을 처음부터 끝까지 순차적으로 읽는 경우 하나의 열기/닫기가 여러 열기/닫기 작업보다 빠릅니다.

그러나 1 개의 큰 파일에서 많은 검색을해야하는 경우 별도의 파일을 저장하면 속도가 떨어지지 않을 수 있습니다.

어떤 접근 방식을 사용하든 한꺼번에 전체 파일을 읽지 않아야합니다. 그것을 덩어리로합니다.

0

30sec 시차는? 큰 것을 정의하십시오. 평균의 컴퓨터 RAM에 맞는 모든 것은 아마도 총 30 초보다 훨씬 더 걸리지 않을 것입니다.

0

왜 파일을 목록으로 읽어야한다고 생각하십니까?

여러 개의 작은 파일을 열고 각각 독립적으로 처리 할 수있는 경우는 다음 반드시 그 의미

(가) 당신이, 당신이 어떤 파일을 처리 할 수있는 목록으로 읽을 필요가 없습니다 (을 포함, 1 개의 대형 파일) 한 번에 한 줄씩 (실제 메모리 부족 문제를 피하십시오)
또는
(b) 수행해야하는 작업은 사용자가 말한 것보다 더 복잡합니다.

관련 문제