![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Keeper_Andrew |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 21.10.2002 Репутация: нет Всего: нет |
Иммется задача: Разработать объект чтобы он создавался и работал максимально быстро. Рабочий экземпляр уже есть.
С этим объектом связано большое число перегруженных операторов, и объявлены эти операторы внутри класса (как члены класса). Вопрос: ускорит ли работу с объектом перенесение перегрузок операторов на статистичексие friend операторы. Фишка в том, что это позволит сократить число членов класса, но добавит по одному параметру в обработчики операторов. |
|||
|
||||
| suborg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 29.4.2002 Где: Москва Репутация: нет Всего: нет |
мне кажется не ускорит... от количества членов не много-то зависит, а от объема параметров зависит используемый объем стэка, то есть больше туда пушить и попать придётся ну или иначе вставлять, не важно...
|
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Конечно ничего не измениться. У тебя же операторы не виртуальные, а значит вызов функции-члена фактически не отличается от вызова внешней функции.
Память под обект выделяется ровно столько, чтобы хватило туда вместить данные объекта.А если ты еще не правильно сделаешь внешние операторы - будешь передавать не ссылку на объект а его самого - то это будет медленее чем операторы-члены в них передается указатель. А если сделаешь правильно, то с точки зрения скомпилированного кода отличатся эти две реализации фактически не будут. Чтобы улучшить - смотри где можно поставить inline, сonst. А так же почитай про пулы памяти. -------------------- Волны гасят ветер... |
|||
|
||||
| Keeper_Andrew |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 21.10.2002 Репутация: нет Всего: нет |
Значит если я (для примера) добалю еще операторов внутрь класса то скорость его работы не уменьшится?
|
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
"Его" - это кого? Класс сам по себе не работает - работает код. Обобщено говоря - работают функции.
-------------------- Волны гасят ветер... |
|||
|
||||
| Keeper_Andrew |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 21.10.2002 Репутация: нет Всего: нет |
Возможно некорректно выразился.
Я хотел сказать скорость работы с объектом (если он хранится в dll). Создание, разрушение, вызов методов и т.д. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |