2014-10-24 2 views
0

많은 텍스트 파일에 적용 할 텍스트 처리 스크립트가 많습니다. 나는 그들을 시작하고 텍스트 파일을 포함하는 디렉토리와 하위 디렉토리를 반복하기 위해 배치 스크립트 (Win 7)를 작성하고있다.자주 반복하거나 집중적으로 처리하는 것이 더 효율적입니까?

변형

for x in y 
process 1 on x 
process 2 on x 
process 3 on x 

또는 변형의 B

for x in y 
process 1 on x 

for x in y 
process 2 on x 

for x in y 
process 3 on x 
: efficieny에 대한 하나의 반복 동안 이상의 프로세스를 더 자주 반복 또는 실행의 바람직한 방법이 있는지 사실, 궁금

미리 감사드립니다.

+1

의견에 불과합니다. 더 많은 정보가 없으면 첫 번째 방법은 파일 시스템 캐시를 더 잘 사용해야합니다. –

+0

'for/f' 루프는 매우 많은 수의 파일/긴 파일 이름이 처리되어 긴 지연을 유발할 때 버그가 있습니다. 이 태스크의 세부 사항은 응답을주기 위해 중요합니다. 왜냐하면 정기적 인'for' 루프가 특정 경우에 잘못 처리되기 때문입니다. 배치 스크립트로 작업을 처리하는 가장 좋은 방법은 실제 작업에 따라 다릅니다. – foxidrive

답변

1

이것은 루프의 크기, 프로세스의 양과 프로세스 (및 당신이 사용하는 프로그래밍 언어)에 필요한 리소스의 양에 따라 달라집니다. 이 방법을 찾는 가장 좋은 방법은 테스트 스크립트를 작성하는 것입니다. 두 가지 방법을 모두 제공하고 가장 빨리 whitch를 참조하십시오.

차이가 작 으면 나는 가장 깨끗한 해결책으로 갈 것이고, 하나의 루프만으로 여러 프로세스를 실행할 수 있습니다 ... 왜냐하면 읽기 쉽기 때문입니다.

1

이것은 여러 요소에 따라 다르므로 아무런 답이 없습니다. 그러나 당신이 취하는 접근 방식은 주로 처리가 무엇인지에 달려 있다고 생각합니다.

process1process2process3처럼 입력을 변경한다고 가정 해 보겠습니다. 그들은이 과정을, stdin을하고 stdout 출력을 제공 할 수 있도록 처리를 쓸 수 있습니다 가능하면 - 그런 식으로 당신은 할 수 :

각 파일을 한 번만 읽어됩니다
for each x in y do 
    process1 x | process2 | process3 > x_new 
    overwrite x with x_new 

에 모든 과정을 통해 파이프 " 그들의 일을하라. "그리고 결국 바뀌었다.

하지만 내가 말했듯이 이것은 전적으로 처리가 실제로하는 것에 달려 있습니다.

관련 문제