Optimized getWritableIdentifier to improve the speed of MistInBuffer even further.

This commit is contained in:
Thulinma 2016-02-08 16:02:23 +01:00
parent 9631b79e86
commit 7c759c7664
2 changed files with 8 additions and 3 deletions

View file

@ -282,6 +282,8 @@ namespace DTSC {
int width; int width;
int height; int height;
int fpks; int fpks;
private:
std::string cachedIdent;
}; };
///\brief Class for storage of meta data ///\brief Class for storage of meta data

View file

@ -1376,9 +1376,11 @@ namespace DTSC {
///\brief Returns a writable identifier for a track, to prevent overwrites on readout ///\brief Returns a writable identifier for a track, to prevent overwrites on readout
std::string Track::getWritableIdentifier() { std::string Track::getWritableIdentifier() {
if (cachedIdent.size()){return cachedIdent;}
std::stringstream result; std::stringstream result;
result << getIdentifier() << "_" << trackID; result << getIdentifier() << "_" << trackID;
return result.str(); cachedIdent = result.str();
return cachedIdent;
} }
///\brief Determines the "packed" size of a track ///\brief Determines the "packed" size of a track
@ -1418,8 +1420,9 @@ namespace DTSC {
///\brief Writes a track to a pointer ///\brief Writes a track to a pointer
void Track::writeTo(char *& p) { void Track::writeTo(char *& p) {
writePointer(p, convertShort(getWritableIdentifier().size()), 2); std::string trackIdent = getWritableIdentifier();
writePointer(p, getWritableIdentifier()); writePointer(p, convertShort(trackIdent.size()), 2);
writePointer(p, trackIdent);
writePointer(p, "\340", 1);//Begin track object writePointer(p, "\340", 1);//Begin track object
writePointer(p, "\000\011fragments\002", 12); writePointer(p, "\000\011fragments\002", 12);
writePointer(p, convertInt(fragments.size() * 11), 4); writePointer(p, convertInt(fragments.size() * 11), 4);