С++ Reference Length Performance

85
11

Мой вопрос прост, что потери производительности из-за эталонную длину. Я не могу объяснить, но вот образец:

между этим

C* pC = m_a->m_b->m_c;

и это выражение

C* pC = m_b->m_c;

Я спрашиваю об этом, потому что у меня есть глобальный класс, который имеет шаблон Singleton и содержит все. Я обращаюсь ко всем своим членам от своих членов, как это.

class Global
{
A* a;
X* x;
};

class A { B* b; };
class B { C* c; }; // etc

class X { Y* y; };
class Y { Z* z; };
class Z
{
void foo() { Global::GetInstance()->a->b->c->foo(); }
}

Это хороший дизайн? Любые советы для этого? У меня возникают проблемы с этой темой. Qt Architecture Advice Needed

спросил(а) 2020-03-26T12:01:57+03:00 2 месяца назад
1
Решение
65

Каждый оператор → - индексированное косвенное обозначение, которое стоит цикла или два, в зависимости от процессора, и может быть невидимым, если его конвейер достаточно хорош.

Однако реальный вопрос здесь "по сравнению с чем?" Какие другие методы внедрения вы рассматриваете для решения этой проблемы? Если у вас нет жизнеспособной альтернативы, ваш вопрос действительно бессмыслен.

Точно так же часто задаваемый вопрос об относительной эффективности виртуальных и не виртуальных функций бессмыслен, если только он не учитывает, как получить тот же эффект в обоих направлениях. В не виртуальном случае это по меньшей мере равно "if" или "switch", стоимость которого должна быть добавлена к сравнению.

ответил(а) 2020-03-26T12:16:08.506892+03:00 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема