counting millisec time in bash on Mac

Counting time with accuracy of milliseconds in bash on Mac

Counting time with accuracy of milliseconds in normal bash

bash에서 프로그램을 실행시켜서 실행시간을 재는 간단한 bash script는 아래와 같다. milliseconds 단위로 실행시간을 측정할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# countTime.sh
#!/bin/bash
argc=$#
if [ $argc -eq 0 ]; then
echo "usage ./countTime.sh program_to_run"
exit
fi
# check the beginning time
beginTime=$(date +%s%N)
# runt the first parameters
eval $1
endTime=$(date +%s%N)
elapsed=`echo "($endTime - $beginTime) / 1000000" | bc`
elapsedSec=`echo "scale=6;$elapsed / 1000" | bc | awk '{printf "%.6f", $1}'`
echo TOTAL: $elapsedSec sec

on BSD, the default linux type of Mac

문제는 BSD linux 에서는 기본적으로 date가 milliseconds기록을 기본적으로 지원하지 않는다. 그래서 기본적으로 아래와 같은 결과가 나온다.

1
2
$ date +%s.%N
1485066528.N

따라서 coreutils라는 패키지를 깔아서 gdate로 사용해야 한다. 설치 방법은 아래를 참조하자. brew는 기본적으로 설치되었다고 가정한다.

1
brew install coreutils

다음은 bash의 alias로 date를 gdate로 바꿔준다.

1
vim ~/.bash_profile

아래 내용을 추가하자.

alias date=’/usr/local/bin/gdate’

그러면 이제 date +%s.N을 했을 떄 제대로 나오는 것을 확인할 수 있다! 위에서 만든 스크립트도 제대로 사용이 가능하다.

1
2
$ date +%s.%N
1485066528.720920000

Useful Links

경과시간 출력하기

counting time on Mac bash

Share Comments