class — C ++ Нестатические функции-члены, накладные расходы

Я хотел бы знать это, если у нас есть следующий класс:

class MyClass
{
public:
MyClass(...)
type nonstatic_func1(...);
type nonstatic_func2(...);
...
type nonstatic_func10(...);
private:
type var1;
type var2;
...
type var10;
};

Будет ли каждый экземпляр MyClass иметь свой собственный набор из десяти функций (т. е. будет ли создаваться «версия» каждой из десяти функций)? В какой степени, скажем, наличие 20 функций в определении класса влияет на производительность, в отличие от, скажем, двух функций (не статических), особенно в отношении создания экземпляров, но также и при работе с этими экземплярами? Насколько количество переменных повлияет на производительность? (см. следующий абзац, vector часть)

Причина, по которой я спрашиваю, заключается в том, что я пишу программу, которая создает множество экземпляров класса (для иллюстрации у меня довольно большой вектор, т.е. vector<MyClass> vecнапример), и программа работает медленнее, чем я ожидал.

В двух словах, я хотел бы знать, сколько накладных расходов приходится на создание экземпляра класса, который имеет много нестатических функций / переменных, и работу с ним.

РЕДАКТИРОВАТЬ

Одна из вещей, которые я делаю с моим большим вектором экземпляров классов, это сортировка … это главное, что я подозреваю, это снижение производительности, так как есть много движущихся (и копирующих, явно и неявно) элементов (экземпляров) вокруг и между векторы. Очевидно, что если объем данных, которые необходимо переместить и скопировать, достаточно велик, это может привести к снижению производительности.

1

Решение

Будет ли каждый экземпляр MyClass иметь свой собственный набор из десяти функций

Нет.

В какой степени, скажем, наличие 20 функций в определении класса влияет на производительность, в отличие от, скажем, двух функций (не статических), особенно в отношении создания экземпляров, но также и при работе с этими экземплярами?

Поэтому нет.

Насколько количество переменных повлияет на производительность?

Основное влияние наличия большого количества переменных-членов состоит в том, что каждый экземпляр занимает много места в памяти. Следствием большого размера является то, что он будет тратить много времени на копирование. Менее очевидные временные издержки были бы в кэшировании процессора.

Но эти накладные расходы не могут быть причинами вашей проблемы.

Одна из вещей, которые я делаю с моим большим вектором экземпляров классов, это сортировка … это главное, что я подозреваю, это снижение производительности

Не подозревай. Мера. Чтобы отследить, куда идет производительность, выясните, где находится узкое место.

4

Другие решения


По вопросам рекламы [email protected]