Функция pprof.StopCPUProfile

Функция pprof.StopCPUProfile останавливает профилирование CPU, которое было запущено вызовом pprof.StartCPUProfile. Функция не принимает никаких параметров и завершает запись профиля в указанный при запуске файл. После вызова этой функции профилирование CPU останавливается, и собранные данные сохраняются для последующего анализа. Функция должна вызываться после завершения участка кода, который требуется профилировать.

Синтаксис

gopprof.StopCPUProfile()

Пример

Давайте запустим профилирование CPU для функции, выполняющей вычисления, и остановим его с помощью pprof.StopCPUProfile:

gopackage main

import (
  "os"
  "runtime/pprof"
)

func main() {
  f, _ := os.Create("cpu.prof")
  pprof.StartCPUProfile(f)
  defer pprof.StopCPUProfile()

  sum := 0
  for i := 0; i < 1000000; i++ {
    sum += i * i
  }
}

В результате выполнения кода в файл cpu.prof будет записан профиль CPU для выполнения цикла.

Пример

Рассмотрим пример с профилированием более сложной функции и остановкой профилирования вручную:

gopackage main

import (
  "os"
  "runtime/pprof"
  "time"
)

func heavyComputation() {
  result := 0
  for i := 0; i < 100000; i++ {
    for j := 0; j < 1000; j++ {
      result += i * j
    }
  }
}

func main() {
  f, _ := os.Create("cpu.prof")
  pprof.StartCPUProfile(f)

  heavyComputation()

  pprof.StopCPUProfile()
  time.Sleep(100 * time.Millisecond)
}

Результат выполнения кода:

go"CPU profile saved to cpu.prof"

Профилирование останавливается после вызова pprof.StopCPUProfile, и программа продолжает выполнение с паузой в 100 миллисекунд.

Смотрите также

  • функцию pprof.StartCPUProfile,
    которая запускает профилирование CPU
  • функцию pprof.WriteHeapProfile,
    которая записывает профиль памяти
  • функцию pprof.Lookup,
    которая возвращает профиль по имени
  • пакет runtime/pprof,
    который предоставляет инструменты для профилирования