2012-09-06 2 views
3

awk에는 두 가지 출력 기능, 즉 printprintf이 있습니다.awk print 대 printf 기능

  • awk의 구현이 매우 다른가요?
  • 성능/속도와 관련된 차이점은 무엇입니까? (가능한 경우 - 이론적으로는 명령 줄의 "time"과 함께)?
  • 그들은 동일한 시스템 호출을 사용합니까?

답변

9
  1. 성능 차이는 아마도 측정 할 수 없습니다.
  2. print 함수는 마지막에 개행을 출력합니다. printf은 요청하지 않는 한 허용되지 않습니다.
  3. print 코드는 인수를 문자열로 변환 한 다음 OFS (출력 필드 구분 기호)로 구분 된 출력으로 보냅니다.
  4. printf 코드는 이중 형식 (%16.8g 또는 이와 비슷한) 및 유사한 연산을 사용하여 문자열을 이중으로 변환해야 할 수 있습니다.
  5. 사용 된 시스템 호출은 write(2) 또는 그 둘에 대해 비슷하지만, 그 위에 계층화 된 코드 (아마도 <stdio.h>)가있을 것입니다.

까지 추가하는 모든 :

  • 구현이 다른; printprintf보다 조금 간단합니다 (따라서 더 빠름).
  • 차이점은 대부분의 경우 측정 할 수 없습니다.
  • print을 사용하면 필요한 작업을 수행 할 수 있습니다. printf을 사용하십시오.
  • 걱정하지 마십시오.

그리고 사용 sprintfprint 직접 printf를 사용하는 것보다 속도가 느려질 수 있으므로하지 않는 것 같다 따랐다.

의심되는 경우 조치하십시오.

+0

감사합니다. 3 개의 FP 매개 변수 (통계의 경우 여러 번)를 사용하여 특정 출력 행의 시간을 측정했습니다 :'print : printf ~ = 16s : 17s'. 차이가 그렇게 크지는 않습니다. – static