设为首页收藏本站

爱吱声

 找回密码
 注册
搜索
查看: 3210|回复: 25
打印 上一主题 下一主题

[信息技术] C++ 提速的新发现

[复制链接]

该用户从未签到

楼主
发表于 2022-9-27 20:29:50 | 显示全部楼层
雷达 发表于 2022-9-24 23:54
# K" B3 k: _# G9 I1 E  _: h7 Xvoid xcorr(comp* outcomp, comp* A, int lenA, comp* B, int lenB)
0 @( @, `4 T2 Y# C{
' Z6 ]% q9 z% x0 ^. {        comp temp, xtimesy;
/ K& S: k' X) O' Y
这个code里面如果Openmp没有被注释掉的话,那么temp那个变量应该是定义在循环里面,否则线程之间会存在争夺写入那个temp的风险。* H" D+ L) @& Z# E1 L  {
内层for循环如果没有内部操作的话,编译时应该被优化掉了,和你完全注册掉整个循环是一回事。可能你的编译设置没有打开优化?; o: c- u) |; H/ V8 D
VS社区版没有问题,我工作用的就是社区版,设置正常的话不会比商业版差。以前游说头头用Intel Compiler,他说不想花钱,而且差不了多少,就一直用到现在。
回复 支持 反对

使用道具 举报

该用户从未签到

沙发
发表于 2022-9-27 20:39:22 | 显示全部楼层
雷达 发表于 2022-9-26 01:30
5 W8 R8 N! R5 i理了理思路,重新做了一个测试。* C# P7 |  q* S- W7 @( V
做了两个 vector 和 两个 float *, 都长 100000
1 E6 G: V: {3 ?% ~7 a1 f: l外循环 6000,里面先做随 ...
3 }* z/ B, X3 p7 r0 m& J9 N# \4 X
这个时间是从哪里开始算的?6 u3 L: k# u) E! _! {8 }; W
我怀疑这个200多秒里面有200秒花在产生随机数上了,真正计算大概只用了2秒, 用了vector那个因为有vector的额外开销,多了几十秒。1 y2 F8 P& J' T9 A  b# \: w* r! k  \
按照两个10万个数字的相关计算的规模来估计的话,两秒都算很长很长了。这个结果真的很奇怪。
回复 支持 反对

使用道具 举报

手机版|小黑屋|Archiver|网站错误报告|爱吱声   

GMT+8, 2024-6-7 19:01 , Processed in 0.033471 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表