프로그래밍 (Programming)/고랭 (Golang)
[Golang/Go] 실행 시간 측정하기 (time, Since, Sub)
Bbaktaeho
2021. 8. 23. 21:45
반응형
Golang 실행 시간 측정
go 언어의 time package를 사용하여 간단하게 실행 시간을 측정할 수 있습니다.
import "time"
time 모듈은 builtin package이므로 따로 설치할 필요가 없습니다.
go 언어의 코드 실행 시간은 각 컴퓨터에 따라 영향을 많이 받으므로 결과는 다를 수 있습니다.
start := time.Now()
... // 사이에 실행되는 로직의 시간을 측정
end := time.Since(start)
time.Since() 함수에 시간을 가리키는 인수를 받으면 그 시점부터 Since가 실행된 시점까지의 시간을 측정합니다.
Since() 함수는 time 패키지에서 그대로 사용할 수 있습니다.
또한 time.Time 구조체의 함수인 Sub() 함수를 이용할 수도 있습니다.
start := time.Now()
...
end := time.Now().Sub(start)
함수로 시작 시간과 끝나는 시간의 차이를 구해서 실행 시간을 구할 수 있습니다.
구현 코드에도 지속 시간(실행 시간)을 리턴하도록 작성되어 있습니다.
// Sub returns the duration t-u. If the result exceeds the maximum (or minimum)
// value that can be stored in a Duration, the maximum (or minimum) duration
// will be returned.
// To compute t-d for a duration d, use t.Add(-d).
func (t Time) Sub(u Time) Duration { ... }
예제
package main
import (
"fmt"
"time"
)
func main() {
start := time.Now()
time.Sleep(time.Second)
end := time.Since(start)
fmt.Println("1초가 걸린 시간:", end)
start = time.Now()
time.Sleep(time.Second)
end = time.Now().Sub(start)
fmt.Println("1초가 걸린 시간 (2):", end)
start = time.Now()
time.Sleep(2 * time.Second)
end = time.Since(start)
fmt.Println("2초가 걸린 시간", end)
sum := 0
start = time.Now()
for i := 0; i < 100000000; i++ {
sum += i
}
end = time.Since(start)
fmt.Println("1 ~ 100000000 합", end)
sum = 0
start = time.Now()
for i := 0; i < 1000000000; i++ {
sum += i
}
end = time.Since(start)
fmt.Println("1 ~ 1000000000 합", end)
}
1초가 걸린 시간 (1): 1.005077987s
1초가 걸린 시간 (2): 1.001333945s
2초가 걸린 시간 2.004848542s
1 ~ 100000000 합 36.119407ms
1 ~ 1000000000 합 241.14292ms
간단하게 loop의 실행 시간을 측정할 때 유용할 것 같습니다!
References
반응형