@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. Можно ли как то избавится от аллокаций в данном случае?
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
TechOps Москва
от 3 000 до 4 500 usd.
Boomstarter Москва
от 110 000 до 160 000 руб.
2Reallife Москва
от 100 000 до 130 000 руб.
21 авг. 2018, в 16:11
1500 руб./за проект
21 авг. 2018, в 15:45
4000 руб./за проект
21 авг. 2018, в 15:42
2500 руб./за проект