Russian Qt Forum
Сентябрь 30, 2024, 10:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос, если создать 100500 простых объектов, будет ли тормозить?  (Прочитано 3090 раз)
Макс
Гость
« : Октябрь 20, 2012, 02:05 »

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

class Node
{

struct neighbors
    {
        Node *neigh1;
         int dist1;

        Node *neigh2;
         int dist2;

        Node *neigh3;
         int dist3;

        Node *neigh4;
         int dist4;
    };

public:
  //filds
    QString name;
    int x;
    int y;
    neighbors n;
  //filds

    Node(QString name, int x, int y, Node* neigh1, Node* neigh2=0, Node* neigh3=0, Node* neigh4=0)
    {
        this->name=name;
        this->x=x;
        this->y=y;
        this->n.neigh1=neigh1;
        this->n.neigh2=neigh2;
        this->n.neigh3=neigh3;
        this->n.neigh4=neigh4;
    }

};

Может есть какие-то хранилища специальные не знаю, я на QT вторую неделю только...
Раньше кодил на Java немного, там любой класс наследуется от суперкласса, в котором куча своих полей и методов, и там мое решение должно как бы тормозить...

P.S Не кидайтесь яблоками, это моя первая тема...
Записан
Vass
Гость
« Ответ #1 : Октябрь 20, 2012, 07:40 »

1000 объектов это не 100500, это довольно таки мало
а примерно прикинуть оперативку можно:
для 32-битной системы

Node *neigh1 - 4;
int dist1 - 4;

Node *neigh2 - 4;
int dist2 - 4;

Node *neigh3 - 4;
int dist3 - 4;

Node *neigh4 - 4;
int dist4 - 4;

QString name; - ну приблизительно 32 ок?
int x - 4;
int y - 4;

Итого одна нода: 4 +4 +4 +4 +4 +4 +4 +4 +32 +4 +4 = 72 байта,
итого 1000  нод 72000 байт, ок, округлим до 100Кб

итого 1000 объектов ваших нод займет около 100 Килобайт.
Записан
Bepec
Гость
« Ответ #2 : Октябрь 20, 2012, 08:17 »

Если вы посмотрите на примеры Qt, там есть пример ммм... 40000 chips вроде, точно не помню.
Так вот там - имеется 40к элементов с зумом, сдвигом и без тормозов.

Так что спокойно можете прикидывать 1к объектов.
Записан
Макс
Гость
« Ответ #3 : Октябрь 20, 2012, 09:59 »

Спасибо ребят) нужно больше фундаментальные вещи учить, а времени нет)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Октябрь 20, 2012, 10:52 »

Ну в принципе если "времени нет" то можно и зарезервирoвать по максимуму (4 соседа), для  "ребят" хватит. А программист делал бы напр так
Код
C++ (Qt)
class Node
{
public:
   QString name;
   int x;
   int y;
   int mNumLinks;    // число связок
   int mLinkIndex;   // индекс первой связки в mLinkArray
 
   typedef std::pair <Node *, int> TLink;
   static std::vector <TLink> mLinkArray;
...
 
Записан
Макс
Гость
« Ответ #5 : Октябрь 20, 2012, 12:28 »


Мне нельзя использовать массивы это надо список реализовывать, и я думаю потери от пары лишних int-ов и пары ссылок будут приемлимы, не канон, но никто не безгрешен
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Октябрь 20, 2012, 13:20 »

Мне нельзя использовать массивы это надо список реализовывать,
В курсовом запрещено использовать массивы? Улыбающийся Может Вы хотели сказать "нельзя использовать std" или "я не знаком с std" - так это не проблема, можно заменить на обычный С массив

и я думаю потери от пары лишних int-ов и пары ссылок будут приемлимы, не канон, но никто не безгрешен
Дело не в потерях, Вы зарядили структуру работать с которой будет весьма неудобно.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.136 секунд. Запросов: 23.