Полезно ли с точки зрения экономии времени и сокращения количества операций создавать ссылку на (*this)
в начале функции-члена, где использование this->
является повторным?Это то, что компиляторы (меня больше всего интересует gcc) уже оптимизируют для меня?Есть ли причины этого не делать?
Пример:
void A::checkBytes( const byte * dataChunk, uint32_t chunkSize )
{
A & self = (*this);
bool UTF8Valid = self.InvalidSequences & 1;
byte current, expectedUTF8Bytes = 0;
for (uint32_t i = 0; i < chunkSize; i++)
{
current = dataChunk[i];
// many tests with 'current' and 'this->InvalidSequences'
self.Count[current]++;
self.ChunkSize++;
}
if (!UTF8Valid) self.InvalidSequences |= 1;
}
Я знаю, что каждая нестатическая функция-член имеет свою собственную скрытую this
.Я знаю, что у меня будет и скрытый A * this
, и A & self
.Что я не знаю, так это то, что многие this->someMember
будут стоить больше, чем многие referenceToThis.someMember
, или не будут стоить вообще.