From 59c921540006bfbb5a06e2443b358470b5932c82 Mon Sep 17 00:00:00 2001
From: Stephan Hilb <stephan@ecshi.net>
Date: Fri, 23 Jul 2021 18:31:08 +0200
Subject: [PATCH] fix performance for image projection

---
 src/operator.jl | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/operator.jl b/src/operator.jl
index e0ae11c..bc27855 100644
--- a/src/operator.jl
+++ b/src/operator.jl
@@ -177,8 +177,9 @@ function project_img(space::FeSpace, img)
 	    for jdim in 1:nrdims, ldofj in 1:nldofs
 		gdofj = space.dofmap[jdim, ldofj, cell]
 
-		phij = SArray{Tuple{space.size...}}(qphi[:, jdim, ldofj, k])
-		dphij = SArray{Tuple{space.size..., d}}(dqphi[:, :, jdim, ldofj, k] * delmapinv)
+		phij = SArray{Tuple{space.size...}}(view(qphi, :, jdim, ldofj, k))
+		dphij = SArray{Tuple{space.size..., d}}(
+		    SArray{Tuple{nrdims, d}}(view(dqphi, :, :, jdim, ldofj, k)) * delmapinv)
 
 		lv = qw[k] * l(x, phij, dphij; opvalues...) * intel
 		b[gdofj] += lv
@@ -187,8 +188,9 @@ function project_img(space::FeSpace, img)
 		for idim in 1:nrdims, ldofi in 1:nldofs
 		    gdofi = space.dofmap[idim, ldofi, cell]
 
-		    phii = SArray{Tuple{space.size...}}(qphi[:, idim, ldofi, k])
-		    dphii = SArray{Tuple{space.size..., d}}(dqphi[:, :, idim, ldofi, k] * delmapinv)
+		    phii = SArray{Tuple{space.size...}}(view(qphi, :, idim, ldofi, k))
+		    dphii = SArray{Tuple{space.size..., d}}(
+			SArray{Tuple{nrdims, d}}(view(dqphi, :, :, idim, ldofi, k)) * delmapinv)
 
 		    av = qw[k] * a(x, phii, dphii, phij, dphij; opvalues...) * intel
 		    push!(I, gdofi)
-- 
GitLab