have found that this behavior documented at allocation_new
new(T) does not initialize the memory, it only zeros it
The article above explains to me why profiler shows so weird timing.
scanner/lexer.go:488 we creating a new zeroed storage for
position.Position and returns its address, it is quick. After that at
parser/position_builder.go:110 we assign data to zeroed object and Go starts memory initialization, it is slow.
I have tried to change
scanner/lexer.go:488 to force initialize memory, see gist