zlacker

[return to "From slow to SIMD: A Go optimization story"]
1. Thalia+qW[view] [source] 2024-01-23 22:04:10
>>rbanff+(OP)
> why is it significant that we slice like a[i:i+4:i+4] rather than just a[i:i+4]?

Well I had never seen that "full slice" expression syntax before. It turns out that it's important because it controls the capacity of the new slice. The capacity of the new slice is now i+4 - i.

So by using the full slice expression you get a slice of length 4 and capacity 4. Without doing this the capacity would be equal to the capacity of the original slice.

I suppose that by controlling the capacity that you eliminate the bounds check.

◧◩
2. ok_dad+rg1[view] [source] 2024-01-24 00:10:38
>>Thalia+qW
You’re also never increasing the size of those slices right? So it’s better memory wise by a bit and maybe faster? I last used Go a while ago, but I recall the capacity was the length of the underlying array?

Edit2: (I’m throttled and I can’t post a new comment I guess? Makes me feel like my voice was stolen! I guess I’m not wanted around HN.)

Thanks for the correction, I would delete my comment but I found a bug in HN while updating it so I’ll preserve my stupidity here in duplicate for now.

◧◩◪
3. costco+Vh1[view] [source] 2024-01-24 00:20:59
>>ok_dad+rg1
There is no copying of memory going on, the a[i: i+4] or a[i: i+4: i+4] slice references the same underlying data as in a.
[go to top]