Build: Use more aggressive inlining for higher efficiency#5026
Build: Use more aggressive inlining for higher efficiency#5026
Conversation
|
Windows 64 和 Linux 64 上的二进制会大多少? |
|
|
|
非常激进的话 x86-64 架构的大个 13% 左右吧
|
|
依稀记得当初没要的acme是膨胀6% |
|
这个是用空间换时间,core 的整体运行效率都会高很多 |
|
|
|
|
|
|
|
|
|
This comment was marked as outdated.
This comment was marked as outdated.
|
依赖也是 l=1 |
|
|
|
|
|
|
看起来就只是 xrayl0 和 xrayl1 的体积反过来了,根据 xrayl4 能看出应该是用了 |
xrayl0 就是默认情况,只是 Go 那边这个参数在小于等于 1 的时候会做反转处理 |
|
代码里面的注释是0禁用 1默认 看起来的gcflag里是10倒转了 1禁用0启用 不过我测的时候是直接比的没有gcflag和l=4 那只是聊天的时候稍微混乱了一点点 结论没变 |
|
|
|
针对 VLESS encryption 的 |
|
|
|
我觉得 Golang 不对 AST 节点数超过 80 的函数内联应该是觉得太大的函数内联优化占比有限 但像 DecodeHeader() 这种最多的 |
|
|
话说可以给 Golang PR 个 |
|
实际情况 |
|
|
|
|
|
哎 AI幻觉 |
|
对吧,你 Google 搜索,置顶的 AI 也是一本正经地告诉你有, 但这也不太属于 AI 幻觉,属于是互联网上错误资料太多, |
|
leaf 函数的问题,Golang 应该是认为如果一个函数里面有其它函数调用,则这个函数是复杂的,但如果里面只是有个报错呢
|
|
大概是因为 Xray 本体代码里的独立函数太少,函数大都附着在结构体上的,所以这个 PR 是内联了依赖里大量 80- 的 leaf 函数 |
|
@Fangliding 话说文档现在就可以把 |
|
2d023b0 DNS 出站 |
|
文档可以标注一下 |
|
*ray 性能瓶颈的话目前:
|
|
因为 16384 那个最符合 TLS 的特征,但是如果包个传输层再包个 TLS 呃,需要一大一小两个 data record 才能把数据发出去 |
This comment was marked as resolved.
This comment was marked as resolved.
|
默认内联给调用函数的定的配额是占用 57 个 AST 节点,除了 panic 之类的 |
|
有点不太信邪,编译的时候在 可以确认的是,不在 加上
如果是 windows/amd64 的话变化也是轻微波动但是差不多,只是默认内联和无内联的大小变化差异不到 2KB 因为某些原因没被其它处理抹平。 就是默认 SDK 下面单纯的激进内联效用不是特别明显,尤其是对 AST 对象多的完全无法内联的情况要考虑进去 附注: |
|
|
高低加一个GOAMD64=v2也能提升一定的性能啊 或者GOAMD64=v3,GOAMD64=v4都加上,用户自己根据自己的cpu选 |
有 然后不要高估用户选架构的能力 最后印象中是有说过出来效果差异不大的 |
再加上加密库在写的时候大概是有针对性优化运行时判断的,加了这个几乎效用不明显 |
|
老早就有人说过这几个v1v2v3v4了 我也测过 结果是没有肉眼可见区别 |
XTLS#4952 (comment) (cherry picked from commit 2485f48)




#4952 (comment)
主要参数说明来源于
https://github.com/golang/go/blob/6e676ab2b809d46623acb5988248d95d1eb7939c/src/cmd/compile/internal/gc/main.go#L133-L141
https://github.com/golang/go/blob/6e676ab2b809d46623acb5988248d95d1eb7939c/src/cmd/compile/internal/inline/inl.go#L9-L18
https://github.com/golang/go/blob/6e676ab2b809d46623acb5988248d95d1eb7939c/src/cmd/compile/internal/inline/inl.go#L47-L62
-gcflags="-l=4"目前应该是在不改动环境变量不添加 GOEXPERIMENT 下的比默认情况下激进的内联了(连带 non leaf functions),不过不改变内联节点限制,所以主线 common.go 也有不能内联的内容。all=-l=4连带依赖外部包一起处理(32 位 MIPS 无缘,最多只能 -l=4,不然直接不出货)