Thread Previous • Date Previous • Date Next • Thread Next |
On 30/11/10 22:05, Anders Logg wrote:
On Tue, Nov 30, 2010 at 07:08:07PM +0100, Martin Sandve Alnæs wrote:I haven't looked at the code, but just some general STL advice: - Never use std::find on map and set types in stl, use their member function find instead. std::find could be a linear search in this case... - Don't use the [] operator to read elements from maps and sets, use mymap.find instead.When we're on this topic, we should avoid using std::set entirely. Using std::vector+std::find+push_back is much faster than std::set+insert as I found out when I optimized the topology computation a couple of days back.
We call this 'dolfin::Set' ;) (dolfin/common/Set.h) std::set can still be useful when we want a sorted container. Garth
-- AndersMartin 2010/11/20 Garth Wells<668862@xxxxxxxxxxxxxxxxxx>:I've done some testing, and using unordered_set appears to not perform as well as Set for standard problems. Each dof (matrix row) has its own set. The sets are usually small, and independent of the mesh size. The problem is that the size of set that belongs to the global dof is equal to the number of columns in the matrix, and when looping over this set (which becomes very large) std::find is called a lot. I don't see simple solution from the SparsityPattern side. What's probably needed is an extension to UFC to distinguish between local and global dofs. Status in DOLFIN: Confirmed Bug description: The computation of the sparsity pattern is dead slow when real spaces are used, i.e., R = FunctionSpace(mesh, 'R', 0) To see the problem, compare the neumann-poisson and poisson demos with fine meshes (256x256) _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@xxxxxxxxxxxxxxxxxxx Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp_______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@xxxxxxxxxxxxxxxxxxx Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp_______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@xxxxxxxxxxxxxxxxxxx Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp
Thread Previous • Date Previous • Date Next • Thread Next |