2023-08-07-跑步随笔

8.7 4'54 做好事不难,难的是一辈子做好事,不做坏事。

还是那个减少一半位集缓存和或运算次数的优化ASO

用宏定义实现了对其他几个版本的统一兼容64-256-512位参数自由切换,

把实验一跑,64位反而比昨天的更慢了!(图一图二)不是因为amd avx2的原因!

在微信里说着说着,发现之前是用1x的缓存实现了2x的加速效果,而现在优化后是用0.5x的缓存实现了1x的加速效果,而且这个1x还有点水分,因为不是两端都动态,只有一端动态,另一端是直接拿这个动态端的结果来做的,是个半动态模式,所以在非真正动态的那一端上标记次数会稍微升高一些(之后可以做可视化实验验证这个猜测)。此外,第二重动态优化(就是那个实现2x的优化)因为不兼容完全去掉了,所以之前的“动动优化”变成了现在的“半动优化”。

也就是说,在微信里说着说着突然就顿悟了把自己说服了,搞半天的优化就是没有优化,白干了!只是内存似乎少了点,构建时间少了三分之二,都是些皮毛。

跑着跑着,发现上面说的这些优化都是指对标记任务这个性能瓶颈进行的优化,而在某些场景比如高维空间和分组很多时,或运算会成为新引入的性能瓶颈,此时标记负载已经被大大优化掉了,从而ASO可以实现一个漂亮的效果。

​总结抽象就是,把一个快的算法搞慢,再把它搞快,在一退一进之间实现自我超越。
全部评论

相关推荐

04-03 12:09
東京大学 C++
求求求求暑期offer:留第一行,剩下的不要
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务