go x/text/unicode/norm:减少初始化时的内存使用

kyks70gy  于 6个月前  发布在  Go
关注(0)|答案(7)|浏览(49)

golang.org/x/text/unicode/norm包在其init函数中分配了21.47kB的内存,无论该包是否被使用。
我们应该像在e.g. https://go-review.googlesource.com/c/net/+/127275https://go-review.googlesource.com/c/go/+/127075中那样懒惰地执行此操作。
这将有助于那些明确导入它的人(或者通过golang.org/x/net/http2导入它),因为那时,std-vendored副本就不需要再分配20KB的内存了。
也许其中的一些表也应该是const字符串,这样链接器就可以将其放在只读部分。然后我们可以在运行时对其进行切片以获取整数。
/cc @mpvl

lf5gs5x2

lf5gs5x22#

将要尝试一下这个!

7cwmlq89

7cwmlq893#

https://golang.org/cl/127924提到了这个问题:unicode/norm: lazy load decomps table

insrf1ej

insrf1ej4#

https://golang.org/cl/127926提到了这个问题:make recompMap a string

b4wnujal

b4wnujal5#

是否有办法生成所有Unicode版本的表格?如果我运行"go generate",它只生成当前Go版本的表格。
另外,你是如何检查init函数的内存分配的?如果我只是进行一个空白导入并运行内存分析器,什么都不会被捕捉到。

kyvafyod

kyvafyod7#

https://golang.org/cl/207017提到了这个问题:unicode/norm: make decomps to a const string

相关问题