Russian Qt Forum

Qt => Общие вопросы => Тема начата: crocus от Ноябрь 23, 2007, 05:57



Название: Использование памяти
Отправлено: crocus от Ноябрь 23, 2007, 05:57
Что будет практичнее с точки зрения использования памяти:
Конструкция с созданием экземпляра класса:
Код:
managetbl = new ManageTable(idList, model, items, items_d, this);

Или все-таки сигнал - слот:
Код:
managetbl = new ManageTable( this);
connect( this, SIGNAL( prepareTable(const int, const QSqlTableModel, const QModelIndexList, const QModelIndexList) ),
managetbl, SLOT( readyTable(const int, const QSqlTableModel, const QModelIndexList, const QModelIndexList) ) );

И что будет идеологически правильно с точки зрения Qt.
P.S. Ногами не пинать - фундаментальных знаний нет.


Название: Re: Использование памяти
Отправлено: Dodge от Ноябрь 23, 2007, 11:29
Суть вопроса не понял  ???

Причем тут память и технология сигнал-слот?


Название: Re: Использование памяти
Отправлено: Kainit от Ноябрь 23, 2007, 12:39
Суть вопроса конечно понятна.
1. Разумеется, сигнал - слот гораздо более памятезатраты, чем просто хранение нескольких ссылок
2. Тут вопрос надо ставить про логичность тех или иных вещей.
3. А с чего возник вопрос про память? Неужели экземпляров ManageTable миллионы? Или миллиарды? Неужели разница в 5-10 килобайт (на миллион экземпляров), которые потратятся при сигнал-слоте существенна?


Название: Re: Использование памяти
Отправлено: Alex03 от Ноябрь 23, 2007, 13:11
Что будет практичнее с точки зрения использования памяти:
Конструкция с созданием экземпляра класса:
Код:
managetbl = new ManageTable(idList, model, items, items_d, this);

Или все-таки сигнал - слот:
Код:
managetbl = new ManageTable( this);
connect( this, SIGNAL( prepareTable(const int, const QSqlTableModel, const QModelIndexList, const QModelIndexList) ),
managetbl, SLOT( readyTable(const int, const QSqlTableModel, const QModelIndexList, const QModelIndexList) ) );

И что будет идеологически правильно с точки зрения Qt.
P.S. Ногами не пинать - фундаментальных знаний нет.

А я тоже вопроса не понял. Во втором случае только connect, а самого вызова нет.
ИМХО передавать всё в конструкторе или нет - надо идти от логики.
Если вопрос про расходование памяти то несомненно на каждый connect расходуется память.


Название: Re: Использование памяти
Отправлено: crocus от Ноябрь 23, 2007, 14:04
Ну блядь и форум стал:
Цитировать
Суть вопроса не понял

Цитировать
А я тоже вопроса не понял.

Если не понял, нахуя тогда постится.. ну ладно это лирика

Цитировать
R.5.3.3 Операция new
Операция new предназначена для создания объекта типа имя-типа ($$R.8.1).


Ссылки- ссылками, но разве не выделяется  память под каждый новый экземпляр класса?? или все-таки замещается ??
И тогда что правильнее один экземпляр и к нему 100 коннектов или создание 100 экземпляров.


Название: Re: Использование памяти
Отправлено: Dodge от Ноябрь 23, 2007, 16:16
Ну блядь и форум стал...
Если не понял, нахуя тогда постится.. ну ладно это лирика
1. Эмоции  при себе.
2. Чтобы получить полноценный ответ, нада вопрос правильно ставить

я тока после последнего поста понял, что к чему.

И тогда что правильнее один экземпляр и к нему 100 коннектов или создание 100 экземпляров.
Опять 25... правильнее с точки зрения чего?...
С точки зрения идиалогии Qt правильнее 100 коннектов...


Название: Re: Использование памяти
Отправлено: -QT- от Ноябрь 24, 2007, 22:23
На мое мнение различие реализаций,только визуально.
Проследить это можно посмотрев генерируемый код, moc-компилятором, а там то же класс,
но только - относящийся к интерфейс - реализация, тоесть прослойка между GUI  и структурой классов
реализующих функционалл.
Поправьте если что не так.  ;)


Название: Re: Использование памяти
Отправлено: -QT- от Ноябрь 24, 2007, 22:45
А по поводу вопроса:
Цитировать
Ссылки- ссылками, но разве не выделяется  память под каждый новый экземпляр класса?? или все-таки замещается ??
И тогда что правильнее один экземпляр и к нему 100 коннектов или создание 100 экземпляров.
Это реализуется в самом создаваемом классе, если класс создан с возможностью
отлова повторной инициализации(создания) и имеет счетчик создания и уничтожения виртуальных копий
обьекта то это реализация с использованием pattern & singleton.
Кое что из этого есть в обсуждениях http://prog.org.ru/forum/index.php/topic,6072.30.html (http://prog.org.ru/forum/index.php/topic,6072.30.html)
еще http://rsdn.ru/article/patterns/singleton.xml (http://rsdn.ru/article/patterns/singleton.xml)
еще http://en.wikipedia.org/wiki/Singleton_pattern (http://en.wikipedia.org/wiki/Singleton_pattern)
Ну вот - это то что я мог сказать сейчас по этому вопросу.