Jason,

Your example does not appear to support your claim. 

A benchmark:

package main

import (
    "strconv"
    "testing"
)

type A struct {
    B string
}

func mycode(slice []A) {
    slice = slice[1:]
}

func BenchmarkMycode(b *testing.B) {
    a := make([]A, 256)
    for i := range a {
        a[i].B = "B: " + strconv.Itoa(i*cap(a))
    }
    b.ResetTimer()
    for N := 0; N < b.N; N++ {
        mycode(a)
    }
}

Output:

$ go version
go version go1.14 linux/amd64
$ go test mycode_test.go -bench=. -benchmem
BenchmarkMycode-4   1000000000   0.290 ns/op   0 B/op  0 allocs/op

Peter

On Saturday, February 29, 2020 at 6:53:18 PM UTC-5, Jason E. Aten wrote:
>
> Profiling suggests that reslicing to remove the first element of a slice 
> is doing alot of allocation; for instance in mycode() below.
> This is surprising to me.... How could this be? is there anything I can do 
> about it?
>
> e.g.
>
> type A struct{
>    B string
> }
>
> func mycode(slice []A) {
>   slice = slice[1:]
> }
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/efc1c5ba-34d0-476f-be3e-7f0c9b84d816%40googlegroups.com.

Reply via email to