请在提交问题之前回答以下问题。谢谢!
您使用的Go版本是什么( go version
)?
go version go1.11rc1 darwin/amd64
这个问题在最新版本的发布中是否重现?
否。
您正在使用什么操作系统和处理器架构( go env
)?
macOS 10.13.6 (darwin/amd64)
您做了什么?
测试了基准测试:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/fannkuchredux-go-1.html
使用1.10.3和1.11rc1进行:
time go run fannkuchredux.go 12
time go1.11rc1 run fannkuchredux.go 12
结果:
1.10.3: go run fannkuchredux.go 12 44.65s user 0.21s system 372% cpu 12.033 total
1.11rc1: go1.11rc1 run fannkuchredux.go 12 57.70s user 0.24s system 373% cpu 15.528 total
您期望看到什么?
1.11rc1的时间接近于1.10.3
您看到了什么?
1.11rc1的时间比1.10.3慢
5条答案
按热度按时间b5lpy0ml1#
/cc @randall77
myzjeezk2#
禁用分支剪枝似乎将性能恢复到1.10级别。有趣的是,在测试/基准测试/go1/fannkuch中禁用CMOV会降低性能20%。
iyfjxgzm3#
可能与未解决的Fannkuch11性能回归有关的问题,从Go1.8升级到Go1.9的时间:#18977。
参考:Fannkuch11的性能在很大程度上取决于BCE:#24660。
mznpcxlj4#
我已经查看了指令级配置文件,并发现所有条件移动都超出了热点。主要问题是启用分支消除传递导致不同的寄存器分配,这反过来将寄存器溢出/填充放入内部循环中。
h22fl7wq5#
将价格下调至1.13,1.12已经太晚了,无法实现任何重大目标。