Hi, I'm looking a bit on assembly performance at the moment. It looks like a lot of time (almost 25% in poisson/linear lagrange) of the time is spent in these two lines of GenericFunction::evaluate():
Array<double> _values(value_size(), values); const Array<double> x(cell.geometric_dimension, const_cast<double*>(coordinates)); This seems to be because of the instantiation of boost::shared_arrays. The ownership of the array data is not transferred (the data will be deleted by the caller of evaluate()), so this does not really add any safety. I don't have a complete picture of how Array<> is used, does the Python layer rely on the shared semantics (in other places)? If not, it might be better to make them non-shared and create copies for use in Python where needed. -- j. _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@lists.launchpad.net Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp