[Sv1-commits] SF.net SVN: sv1:[1554] sonic-visualiser/trunk/data/model/ EditableDenseThreeDimension
Brought to you by:
cannam
From: <ca...@us...> - 2009-05-21 16:55:09
|
Revision: 1554 http://sv1.svn.sourceforge.net/sv1/?rev=1554&view=rev Author: cannam Date: 2009-05-21 16:54:43 +0000 (Thu, 21 May 2009) Log Message: ----------- * Make expandAndRetrieve much faster for cases with duplicated data being compressed at the start of a column (as is common in e.g. adaptive spectrogram output) Modified Paths: -------------- sonic-visualiser/trunk/data/model/EditableDenseThreeDimensionalModel.cpp Modified: sonic-visualiser/trunk/data/model/EditableDenseThreeDimensionalModel.cpp =================================================================== --- sonic-visualiser/trunk/data/model/EditableDenseThreeDimensionalModel.cpp 2009-05-19 16:26:58 UTC (rev 1553) +++ sonic-visualiser/trunk/data/model/EditableDenseThreeDimensionalModel.cpp 2009-05-21 16:54:43 UTC (rev 1554) @@ -300,9 +300,18 @@ c.push_back(p.at(i)); } } else { - for (int i = psize - csize - 1; i >= 0; --i) { - c.push_front(p.at(i)); + // push_front is very slow on QVector -- but not enough to + // make it desirable to choose a different container, since + // QVector has all the other advantages for us. easier to + // write the whole array out to a new vector + Column cc(psize); + for (int i = 0; i < psize - csize; ++i) { + cc[i] = p.at(i); } + for (int i = 0; i < csize; ++i) { + cc[i + (psize - csize)] = c.at(i); + } + return cc; } return c; } @@ -340,7 +349,7 @@ truncateAndStore(index, values); - assert(values == expandAndRetrieve(index)); +// assert(values == expandAndRetrieve(index)); long windowStart = index; windowStart *= m_resolution; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |