시간 명령 간의 실행 시간 차이

시간 명령 간의 실행 시간 차이

내가 이해하는 바로는 원하는 출력을 얻기 위해 더 많은 명령을 실행할수록 실행 시간이 길어집니다.

한 번 보자:

time find /opt/platforms/ -name '*trading*cfg' | xargs grep SenderCompID | awk -F= '{print $2};

real    0m0.008s
user    0m0.000s
sys     0m0.000s

이것은 좋은 실행 시간입니다.

나는 이 추악한 선을 아름답게 꾸몄다.

time find /opt/platforms/ -name '*trading*cfg' -exec grep SenderCompID {} \; | awk -F= '{print $2}'

real    0m0.076s
user    0m0.004s
sys     0m0.008s

튜브 하나 줄여서 써봤는데 그래도 find -exec시간이 조금 더 걸렸네요.

나는 한 단계 더 나아가 파이프 없이 find를 사용했습니다.

time find /opt/platforms/ -name '*trading*cfg' -exec sed -n '/SenderCompID/s/.*=\(.*\)/\1/p' {} \;

real    0m0.076s
user    0m0.008s
sys     0m0.012s

"나쁜" 결과.

설치된 네트워크 장치에 있다고 가정하면 이 시간은 10배가 될 수 있으며 작은 차이는 상당할 것입니다.

겉으로는 더 효율적으로 보이는 명령이 실행하는 데 가장 오랜 시간이 걸리는 이유를 설명할 수 있는 사람이 있습니까? 감사해요

답변1

귀하의 "미화"로 인해 실행 시간이 더 나빠집니다. 프로그램은 여러 파일을 xargs호출하며 각 파일은 동시에 호출됩니다 (교체되었는지 확인할 수 있습니다 ) . 각 호출 중에 여러 파일을 처리할 수 있으면 호출 수가 줄어듭니다(시작이 필요하지 않으며 호출 오버헤드가 없음). 대신 호출하는 경우에도 마찬가지입니다 .grep-execgrepgrepechogrepsedgrep

관련 정보