Speedup: Avoid string copy in CXMLReaderImpl::getAttributeByName

string has operator== for char_type which can save a lot of string allocations when loading xml's.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6206 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
cutealien 2021-04-16 12:59:29 +00:00
parent b709d2a772
commit bfaffe1171
3 changed files with 9 additions and 10 deletions

View File

@ -1,5 +1,6 @@
--------------------------
Changes in 1.9 (not yet released)
- Speedup: Avoid string copy in CXMLReaderImpl::getAttributeByName
- Fix bug in rect::clipAgainst that had caused rects completely outside to the left-top of the rect to be clipped against ending up with both corners outside.
It still worked for UI in most cases as the resulting rectangle still had an area of 0.
- Add getAlign functions to IGUIElement

View File

@ -494,14 +494,12 @@ private:
// finds a current attribute by name, returns 0 if not found
const SAttribute* getAttributeByName(const char_type* name) const
{
if (!name)
return 0;
core::string<char_type> n = name;
for (int i=0; i<(int)Attributes.size(); ++i)
if (Attributes[i].Name == n)
return &Attributes[i];
if (name)
{
for (irr::u32 i=0; i<Attributes.size(); ++i)
if (Attributes[i].Name == name)
return &Attributes[i];
}
return 0;
}
@ -644,7 +642,7 @@ private:
//! converts the text file into the desired format.
/** \param source: begin of the text (without byte order mark)
\param pointerToStore: pointer to text data block which can be
stored or deleted based on the nesessary conversion.
stored or deleted based on the necessary conversion.
\param sizeWithoutHeader: Text size in characters without header
*/
template<class src_char_type>

View File

@ -1,4 +1,4 @@
Tests finished. 72 tests of 72 passed.
Compiled as DEBUG
Test suite pass at GMT Thu Feb 11 14:00:00 2021
Test suite pass at GMT Sat Feb 13 16:24:31 2021