From: Roy S. <roy...@ic...> - 2005-06-08 18:31:34
|
Here's another one to add to the planned post-0.5.0 API improvements: We've got hundreds of "std::vector<std::vector<...> >" instances floating around the code that could be replaced with boost's "multi_array" container. boost::multi_array keeps the data contiguous (i.e. faster memory allocation and better locality), keeps it rectangular (i.e. you can resize the array all at once, not row by row), and supports slices and views (which should simplify my projection code for one). Unfortunately, it won't completely replace nested vectors. Anything that requires subvectors to be independently resizeable won't work, for example. Which is a shame, because what got me curious in the first place was the problem of FE caching, which (even if we use multiple FE objects for interiors/faces/edges and waste a few hundred bytes on weird elements like pyramids) will still require at least a: std::vector<boost::multiarray<Number, 3> > (e.g. cache[elemtype][facenum][basisnum][qp]) --- Roy |