Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Макс от Октябрь 20, 2012, 02:05



Название: Вопрос, если создать 100500 простых объектов, будет ли тормозить?
Отправлено: Макс от Октябрь 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 Не кидайтесь яблоками, это моя первая тема...


Название: Re: Вопрос, если создать 100500 простых объектов, будет ли тормозить?
Отправлено: Vass от Октябрь 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 Килобайт.


Название: Re: Вопрос, если создать 100500 простых объектов, будет ли тормозить?
Отправлено: Bepec от Октябрь 20, 2012, 08:17
Если вы посмотрите на примеры Qt, там есть пример ммм... 40000 chips вроде, точно не помню.
Так вот там - имеется 40к элементов с зумом, сдвигом и без тормозов.

Так что спокойно можете прикидывать 1к объектов.


Название: Re: Вопрос, если создать 100500 простых объектов, будет ли тормозить?
Отправлено: Макс от Октябрь 20, 2012, 09:59
Спасибо ребят) нужно больше фундаментальные вещи учить, а времени нет)


Название: Re: Вопрос, если создать 100500 простых объектов, будет ли тормозить?
Отправлено: Igors от Октябрь 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;
...
 


Название: Re: Вопрос, если создать 100500 простых объектов, будет ли тормозить?
Отправлено: Макс от Октябрь 20, 2012, 12:28

Мне нельзя использовать массивы это надо список реализовывать, и я думаю потери от пары лишних int-ов и пары ссылок будут приемлимы, не канон, но никто не безгрешен


Название: Re: Вопрос, если создать 100500 простых объектов, будет ли тормозить?
Отправлено: Igors от Октябрь 20, 2012, 13:20
Мне нельзя использовать массивы это надо список реализовывать,
В курсовом запрещено использовать массивы? :) Может Вы хотели сказать "нельзя использовать std" или "я не знаком с std" - так это не проблема, можно заменить на обычный С массив

и я думаю потери от пары лишних int-ов и пары ссылок будут приемлимы, не канон, но никто не безгрешен
Дело не в потерях, Вы зарядили структуру работать с которой будет весьма неудобно.