Some optimization

1. We are making FoldConstants first, so we are copying less amount of data in DeepCopyWithParamsAsPointers.
2. Since we already perform DeepCopyWithParamsAsPointers, PartialWrt already produces params as pointers
pull/1159/head
EvilSpirit 2017-05-12 10:02:33 +07:00 committed by phkahler
parent 2f31673708
commit 3ba40230dd
1 changed files with 2 additions and 3 deletions

View File

@ -48,8 +48,8 @@ bool System::WriteJacobian(int tag) {
continue; continue;
mat.eq[i] = e.h; mat.eq[i] = e.h;
Expr *f = e.e->DeepCopyWithParamsAsPointers(&param, &(SK.param)); Expr *f = e.e->FoldConstants();
f = f->FoldConstants(); f = f->DeepCopyWithParamsAsPointers(&param, &(SK.param));
for(j = 0; j < mat.n; j++) { for(j = 0; j < mat.n; j++) {
mat.A.sym[i][j] = zero; mat.A.sym[i][j] = zero;
@ -63,7 +63,6 @@ bool System::WriteJacobian(int tag) {
if(j == paramToIndex.end()) continue; if(j == paramToIndex.end()) continue;
Expr *pd = f->PartialWrt(p); Expr *pd = f->PartialWrt(p);
pd = pd->FoldConstants(); pd = pd->FoldConstants();
pd = pd->DeepCopyWithParamsAsPointers(&param, &(SK.param));
mat.A.sym[i][j->second] = pd; mat.A.sym[i][j->second] = pd;
} }
paramsUsed.Clear(); paramsUsed.Clear();