Go 언어에서 함수와 메소드의 실행 시간을 측정하는 방법을 알아보겠습니다.
함수 실행 시간 측정
함수의 실행 시간을 측정하기 위해서 time
패키지의 Now()
함수와 Sub()
메소드를 사용합니다.
package main
import (
"fmt"
"time"
)
func main() {
start := time.Now()
// 함수 실행
myFunction()
end := time.Now()
elapsed := end.Sub(start)
fmt.Println("함수 실행 시간:", elapsed)
}
func myFunction() {
// 함수 본문
}
위 예시에서 myFunction()
함수를 실행하는데 걸린 시간을 측정합니다. time.Now()
함수로 시작 시간을 기록하고, time.Now()
로 종료 시간을 기록한 후 Sub()
메소드로 두 시간의 차이를 구합니다. 이렇게 구한 실행 시간은 duration 형태로 반환됩니다.
메소드 실행 시간 측정
메소드의 실행 시간을 측정하기 위해서는 해당 메소드가 속한 구조체 타입에 대한 별도의 메소드를 정의해야 합니다. 이 메소드에서는 실제로 원하는 메소드를 호출하고 실행 시간을 측정합니다.
package main
import (
"fmt"
"time"
)
type MyStruct struct {
// 필드들
}
func (m *MyStruct) myMethod() {
// 메소드 본문
}
func (m *MyStruct) timedMethod() {
start := time.Now()
// myMethod() 실행
m.myMethod()
end := time.Now()
elapsed := end.Sub(start)
fmt.Println("메소드 실행 시간:", elapsed)
}
func main() {
myStruct := &MyStruct{}
myStruct.timedMethod()
}
위 예시에서는 myMethod()
메소드를 실행하는데 걸린 시간을 측정하는 timedMethod()
메소드를 정의합니다. 이때 myMethod()
를 호출하기 전과 후에 time.Now()
를 사용하여 시간을 기록하고, Sub()
를 통해 두 시간의 차이를 구합니다.
이렇게 작성된 코드는 해당 함수나 메소드의 실행 시간을 콘솔에 출력하는 간단한 예시입니다. 필요에 따라 실행 시간을 파일에 기록하거나 다른 작업에 사용할 수도 있습니다.
참고: Go 언어에서는 프로파일링 도구인
pprof
를 사용하여 더 정교하게 실행 시간을 측정할 수도 있습니다. 또한, 더 정밀한 시간 측정을 위해time.Now()
대신에time.Since()
함수를 사용할 수도 있습니다. 이러한 세부 사항은 해당 도구와 함수의 공식 문서를 참고하세요.