I recently added a new API (AllocSoonUse) to the 
https://gitee.com/qiulaidongfeng/arena I wrote (copy in 
https://github.com/qiulaidongfeng/arena)
This API allocdata to adjacent []byte, and the length can be set.
I use this benchmark code : https://go.dev/play/p/nAGveraT5_h

benchmark Brief description, use AllocSoonUse and new to allocate some data 
of different sizes that does not contain Pointers and use it soon after 
allocation.

I use `go test -bench=. -count=10 -benchtime=2s > new.txt && benchstat 
new.txt`  got this result
         │   new.txt   │
         │   sec/op    │
NoStd-16   207.4µ ± 4%
Std-16     245.0µ ± 1%
geomean    225.4µ

It appears that using AllocSoonUse takes 15.34% less time than using new in 
some scenarios.

I initially speculated that the reason for the performance improvement was 
the change in cache hit rate.

But using this benchmark https://go.dev/play/p/SCNMV6I9GWC and `go test 
-bench=. -count=10 -benchtime=2s > new.txt && benchstat new.txt`  got this 
result
         │   new.txt   │
         │   sec/op    │
NoStd-16   206.6µ ± 3%
Std-16     236.0µ ± 2%
geomean    220.9µ

It appears that there is still a 12.45% performance gap after commenting 
out the access code to allocated memory to reduce the access to memory.

I want to get the performance gap so the reason.

The possibility has been ruled out, AllocSoonUse  allows free memory in a 
way that allows for immediate reuse  , but I did not enable this opt-in.

-- 
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/13dfb086-3fc4-4361-80eb-fc6466cfd72fn%40googlegroups.com.

Reply via email to