[go] Go 언어에서 함수와 메소드의 실행 시간 측정

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() 함수를 사용할 수도 있습니다. 이러한 세부 사항은 해당 도구와 함수의 공식 문서를 참고하세요.