일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Android
- 싱글 스레드
- HP
- 코틀린
- 안드로이드
- ListView
- 오버로딩
- as?
- Overloading
- 패널 교체
- 노트북 추천
- 함수
- 리스트 뷰
- node.js
- Java
- javascript
- 자바
- Python
- golang
- 자바스크립트
- js
- 노트북
- adapter
- Kotlin
- 배열
- go
- var
- 파이썬
- 연산자
- Array
Archives
- Today
- Total
Bbaktaeho
[Golang/Go] 실행 시간 측정하기 (time, Since, Sub) 본문
프로그래밍 (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
반응형
'프로그래밍 (Programming) > 고랭 (Golang)' 카테고리의 다른 글
[Go/range] range 제대로 이해하기 (2) | 2024.02.11 |
---|---|
[Go/Concurrency] goroutine에서 slice에 append하는 여러가지 방법 (동시성 프로그래밍에서 주의할 점) (4) | 2022.09.18 |
[Go/Ethereum] Ethereum JSON RPC Batch Call 직접 만들기 (Golang, Ethereum, RPC, net/http) (2) | 2022.09.11 |
[Go/DB] Go언어에서 MYSQL connection 다루기 (MYSQL, GORM, Connection pool) (0) | 2022.08.28 |