Как стать автором
Обновить
1
0

Пользователь

Отправить сообщение

Отличная статья для новичков. Не понял только пример с sync.Pool. Фактически в варианте default не создаются и не удаляются новые структуры данных, в отличие от варианта pool, где, как минимум, генерируется (alloc) новая ссылка на слайс. Поэтому default не может быть медленнее pool. Представленный ниже вариант бенчмарка дает результат уже в пользу варианта default. Есть подозрение, что наблюдаемое замедление связано с особенностями в инициализации глобальных переменных при запуске тестов. Если не прав - поправьте - очень интересно разобраться.

func BenchmarkDefault(b *testing.B) {
	var dataDefault = make([]int, 0, 10000)
	for i := 0; i < b.N; i++ {
		dataDefault = processDefault(dataDefault[:])
	}
}

// Классическая работа.
func processDefault(dataDefault []int) []int {
	// Некоторая обработка данных.
	for i := 0; i < 10000; i++ {
		dataDefault = append(dataDefault, i)
	}

	// Очистка.
	return dataDefault[:0]
}

Информация

В рейтинге
5 344-й
Зарегистрирован
Активность

Специализация

Backend Developer, Application Developer
Middle
От 200 000 ₽
C++
C
Golang
Lazarus
SQLite
AVR C
Circuitry
Embedded system
Git