Я написал следующую функцию, которая при использовании с Defer наверняка сработает, но есть ли что-нибудь в стандартной библиотеке, которое я мог бы использовать для этого? Я ищу что-то похожее на Python timeit , которое я мог бы использовать прямо из оболочки?
package main import ( «fmt» «time» ) func main() < defer timeTrack(time.Now(), «looptest») nums := []intvar m []int for n := range nums < if n%2 == 0 < m = append(m, n) >> > func timeTrack(start time.Time, name string)
Комментарии (2)
Кажется, вы ищете ориентиры.
См. Связанный / возможный дубликат Порядок кода и исполнения.
11.03.2018 14:22
API ввода вопросов — это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки.
Перейти к ответу Данный вопрос помечен как решенный
Ответы 3
Вы можете использовать тестирование
func BenchmarkFoo(b *testing.B) < for i := 0; i < b.N; i++ < Foo() >>
11.03.2018 14:32
Вы можете использовать «эталонный» подход:
Основы Golang В Одном Видео
- Назовите файл% SOMETHING% _test.go
- Пишите в него тесты, тесты, примеры следующим образом:
package main import ( «testing» ) func fn() < nums := []intvar m []int for n := range nums < if n%2 == 0 < m = append(m, n) >> > func BenchmarkFunc(b *testing.B) < for i := 0; i < b.N; i++ < fn() >>
go test -bench .
goos: darwin goarch: amd64 BenchmarkFunc-2 5000000 360 ns/op 120 B/op 4 allocs/op PASS ok command-line-arguments 2.190s
11.03.2018 14:38
Ответ принят как подходящий
Используйте пакет Go testing . Например,
package main func doStuff() < nums := []intvar m []int for n := range nums < if n%2 == 0 < m = append(m, n) >> > func main()
package main import «testing» func BenchmarkStuff(b *testing.B) < for i := 0; i < b.N; i++ < doStuff() >>
$ go test -bench=. -benchmem goos: linux goarch: amd64 pkg: main BenchmarkStuff-4 5000000 276 ns/op 120 B/op 4 allocs/op
Используя информацию из теста, вы можете улучшить производительность. Уменьшите количество и размер выделений, используя оценку для инициализации слайса m .
func doStuff() < nums := []intm := make([]int, 0, len(nums)/2+1) for n := range nums < if n%2 == 0 < m = append(m, n) >> >
$ go test -bench=. -benchmem goos: linux goarch: amd64 pkg: main BenchmarkStuff-4 20000000 83.1 ns/op 48 B/op 1 allocs/op
Источник: reddeveloper.ru
Как узнать за какое время скомпилировалась программа на Golang?
Здравствуйте, подскажите какие есть способы узнать за какое время скомпилировалась программа?
И как получить отладочную информацию.
- Вопрос задан более года назад
- 189 просмотров
3 комментария
Простой 3 комментария
Handling time in golang
Неясно зачем это вообще необходимо.
И как получить отладочную информацию
А что именно нужно? И почему не хотите использовать отладчик?
12rbah, Сборка на удаленной машине. Не под мою архитектуру и.т.д.
Решения вопроса 1
Software Engineer
Вам нужно засечь время исполнения.
В Unix системах есть команда: time go . .
В Windows PowerShell есть Measure-Command
Источник: qna.habr.com
Как можно производить замер времени выполнения программы в Go?
qaa-engineer.ru > Golang > Как можно производить замер времени выполнения программы в Go?
В Go для замера времени выполнения программы можно использовать пакет time.
import ( «fmt» «time» ) func main() < start := time.Now() // Здесь должен быть код, который нужно замерить time.Sleep(time.Millisecond * 500) // Пример задержки на полсекунды end := time.Now() fmt.Println(«Программа выполнилась за:», end.Sub(start)) >
В данном примере мы использовали функцию time.Now() для получения текущего времени в начале и конце выполнения программы. Функция Sub() позволяет получить разницу между временными значениями и вывести ее в удобном формате.
Похожие записи:
- Замер времени выполнения куска кода delphi
- Замер времени исполения плейбука для отдельного хоста
- Как осуществить замер производительности приложений с помощью Playwright?
- Какой паттерн проектирования помогает скрыть необходимость выполнения дополнительных шагов до выполнения основной деятельности программы?
- Как производить оптимизацию времени выполнения запросов в PostgreSQL?
Источник: qaa-engineer.ru