![]() |
1
1
首先,我将重写dy循环,去掉“[(j-1)*width+I]”和“in_matrix[(j+1)*width+I]”,然后执行如下操作:
做“q[i]-p[i]”而不是“-1.f*p[i]+q[i]”会稍微快一点,但是,同样的,编译器可能足够聪明,可以在你背后做这件事。 整个过程将从SSE2和多线程中受益匪浅。我打赌从SSE2开始至少要加速3倍。可以使用OpenMP添加多线程,只需几行代码。 |
![]() |
2
2
最大值和最小值必须写入内存。添加 限制
|
![]() |
3
1
编译器可能会注意到这一点,但在进出作用域运算符{}时,您正在堆栈上创建/释放许多变量。而不是:
怎么样:
|
![]() |
4
1
好吧,编译器可能会处理这些问题,但这里有几个小问题:
可能是:
b) 这:
可以做成
在其他地方。如果第一个是真的,那么第二个不可能是真的,所以我们不要检查它。
还有一件事。要最小化乘法,请更改
在循环的最后
应该是公正的
|
![]() |
5
1
在OS X上使用clang和g++编译器的版本分析-O3和-O2,我发现
40%的时间花在了线上的dx矩阵上。
大约9%的时间花在dx_矩阵中的条件句上。。我把它们分成一个单独的循环,看看是否有帮助,但没有什么改变。
这是10公里乘10公里矩阵跑(大约1.6秒) 注意,如果使用不同的编译器、不同的操作系统等,结果可能会有所不同。 |
![]() |
Hatsune Miku · 比较或if语句是否更快[已关闭] 1 年前 |
![]() |
Black Swan · 无法解压缩的值太多(应为2)错误 1 年前 |
![]() |
Kai · 有什么方法可以轻松优化VSCode中的锈迹? 2 年前 |
![]() |
Balfar · 处理NumPy阵列上的循环最有效的方法是什么? 3 年前 |
![]() |
Daniel · C#轻松存储快速访问的大型位矩阵 7 年前 |
|
halbe · 优化音频DSP程序的numpy计算 7 年前 |
![]() |
Afsara · 是否有任何方法不能优化我们的应用程序? 7 年前 |