tgoop.com/go_interview_lib/374
Create:
Last Update:
Last Update:
💬 Почему в Go лучше использовать strconv вместо fmt для преобразования в/из строки?
Пакет strconv
специально создан для преобразования строк, что означает, что он оптимизирован именно для них.
Для наглядности рассмотрим простое сравнение производительности:
func BenchmarkFmt(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = fmt.Sprint(i)
}
}
func BenchmarkStrconv(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = strconv.Itoa(i)
}
}
BenchmarkFmt-8 23821753 50.17 ns/op 16 B/op 2 allocs/op
BenchmarkStrconv-8 100000000 11.47 ns/op 3 B/op 1 allocs/op
strconv.Itoa
значительно быстрее и эффективнее с точки зрения выделения памяти по сравнению с fmt.Sprint
. fmt.Sprint
при этом использует рефлексию, чтобы понять, с каким типом данных работает, и определяет лучший способ форматирования его как строки.Процесс рефлексии не «бесплатный», он добавляет как время, так и накладные расходы на память, что может быть довольно значительным, когда мы обрабатываем большие объемы данных или требуется высокая производительность.
BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/374