- 主题:出乎意料,C++和dotnet6比dotnet5慢10% (转载)
你用的什么cpu?
我在8500t和8559u上实现了一下(略有优化),8500t上大约6.5秒,8559u上大约5秒,前者为vs 2019,后者为ubuntu 20 g++10 O2
这俩cpu都很弱,基频分别是2.1G和2.7G
【 在 finlab 的大作中提到: 】
: 发信人: finlab (挨踢卢瑟), 信区: Programming
: 标 题: 出乎意料,C++和dotnet6比dotnet5慢10%
: 发信站: 水木社区 (Sun Dec 12 11:19:41 2021), 站内
: ...................
--
修改:Bernstein FROM 221.218.209.*
FROM 221.218.209.*
手工循环展开
【 在 hgoldfish 的大作中提到: 】
: 下面这段代码试了一下,可以优化 20% 左右。
: #include <vector>
: #include <cmath>
: ...................
--
FROM 221.218.209.*
那个循环遍历不要从3开始逐一计算,从5开始的所有质数都是6n-1和6n+1的形式;所以循环可以从5开始,每个循环内部处理i和i+2,循环递增6即可
这样可以减少1/3的循环
【 在 finlab 的大作中提到: 】
: 我的cpu支持到avx2, 没有整数除法。但是Intel提供了svml,可以高效模拟除法和取模运算。
: 我试着用svml优化了C++,这次时间缩短到3.67秒。
: simd还是明显提高了速度。 不过估计整数除法是模拟的,提高远没有8倍那么多。
: ...................
--
FROM 221.218.209.*