Skip to content

Commit 20d7e0f

Browse files
committed
Extract vector dereferences outside of loop.
1 parent 8234115 commit 20d7e0f

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

cpp/lib/Filter.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,15 @@ HouLiFilterCached1DVector::HouLiFilterCached1DVector(Grid const &grid)
5454

5555
void HouLiFilterCached1DVector::operator()(Grid::View::C_XY view) const {
5656
for (int ky = 0; ky < grid.KY; ++ky) {
57+
VReal vfy{factors_y[ky]};
58+
59+
// avoid vector dereference inside loop
60+
Real *fx_addr = factors_x_duped.data();
5761
int kx = 0;
58-
for (; kx <= grid.KX - C_WIDTH; kx += C_WIDTH) {
62+
for (; kx <= grid.KX - C_WIDTH; kx += C_WIDTH, fx_addr += R_WIDTH) {
5963
Real *view_addr = (Real *)&view(kx, ky);
6064
VReal input{view_addr};
61-
62-
VReal vfx{&factors_x_duped[kx * 2]};
63-
VReal vfy{factors_y[ky]};
65+
VReal vfx{fx_addr};
6466

6567
eve::store(input * vfx * vfy, view_addr);
6668
}

0 commit comments

Comments
 (0)