반응형
Recent Posts
Recent Comments
«   2024/05   »
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
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

https://pkg.go.dev/time

반응형