Задать вопрос
@bsbak

Можно ли в данном случае избавится от аллокации?

package test1
import (
    "testing"
)
type Transport interface {
	Data() map[interface{}]string
}

type User struct {
	Name string
	Age int
	Year time.Time
}

func (user *User) Data() map[interface{}]string {
	return map[interface{}]string{
		&user.Name: "somedata",
		&user.Age: "somedata",
		&user.Year: "somedata",
	}
}

func BenchmarkTransport(b *testing.B) {
    var t Transport = &User{}
    b.ResetTimer()
	for i := 0; i < b.N; i++ {
		for k, v := range t.Data() {
			_ = k
			_ = v
		}
	}
}

func BenchmarkWithout(b *testing.B) {
    t := &User{}
    b.ResetTimer()
	for i := 0; i < b.N; i++ {
		for k, v := range t.Data() {
			_ = k
			_ = v
		}
	}
}

В BenchmarkTransport 2 аллокации в методе Data return map[interface{}]string{, в во 2 бенчмарке 0. Можно ли как то избавится от аллокаций в данном случае?
  • Вопрос задан
  • 117 просмотров
Подписаться 2 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы