Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
volchonokilli
4 / 4 / 0
Регистрация: 04.01.2012
Сообщений: 41
#1

Оптимизация работы метода класса с объектами класса [C++] - C++

24.04.2012, 23:35. Просмотров 953. Ответов 13
Метки нет (Все метки)

Здравствуйте!
Я хочу сделать 25 000 объектов класса, в последствии они все будут разными, но сейчас, для упрощения задачи, я делаю их одинаковыми.
Собственно, вопрос в том, как это сделать быстро.
Приведённый ниже код, с использованием метода класса делает это ОЧЕНЬ долго.

Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
 
using namespace std;
 
int num=0;
 
void main()
{
    class tile
    {
    public:
        static tile change()
        {
            tile temp;
            temp.num=::num;
            temp.mapp='\xDB';
            return temp;
        }
    private:
            int num;
            char mapp;
    };  
    tile ti[25000];
    for(int i=0;i!=24999;++i)
    {
        ti[i] = tile::change();
        ++::num;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2012, 23:35     Оптимизация работы метода класса с объектами класса [C++]
Посмотрите здесь:

Реализуйте интерфейс динамической структуры list для работы с объектами класса А - C++
Добрый день товарищи программисты. Столкнулся с задачей и никак не могу решить... Так вот вопросы по заданию заключаются в следующем: ...

Вызов метода класса из метода другого класса - C++
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd, bufwr; unsigned char tx_index,...

Обработка метода класса в зависимости от типа данного класса - C++
Имеется класс родителя A с методом Update(), этот класс имеет 2 дочерних класса B, C, каждый из них имеет свой метод обработки Update:...

Не удается обратиться к свойству класса из метода класса - C++
Пишу хедер для работы с файлами такой структуры: nametype1 name1 name2 name3 name4 nametype2

Действия со всеми объектами класса - C++
Есть два класса с рядом данных и методов. Через конструктор одного программа создает кучу объектов. Мне надо чтобы из всех объектов...

Заполнение map объектами класса - C++
Здравствуйте! Нашел пример заполнения map таким образом: map&lt;string, int&gt; M; M = 1; Но при заполнении map аналогичным образом...

Сортировка массива с объектами класса - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class tovary { private: string name; double cina; int kod; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.04.2012, 00:02     Оптимизация работы метода класса с объектами класса [C++] #2
быстро или медленно - это все понятия относительные. а оптимизация - вообще зло.
класс будет именно таким как тут? с парой меберов из встроенных типов?
очень долго относительно чего?
чем измеряли?
откуда такая подребность в быстром создании?
volchonokilli
4 / 4 / 0
Регистрация: 04.01.2012
Сообщений: 41
25.04.2012, 00:08  [ТС]     Оптимизация работы метода класса с объектами класса [C++] #3
Ну, я хочу сделать двухмерную игру с псевдослучайной генерацией мира.
С возможностью удаления, изменения каждой "клетки".
У "клетки" есть свой номер, необходимый для той системы, которую я придумал, и знак отображения на экране (ASCII).
Я предполагал, что сначала все "клетки" будут одинаковыми, а потом уже будут перезаписываться, превращаться в элементы других классов, которые наследуются от этого класса.
Насчёт времени...
Я пять минут ждал, и процесс и не думал прекращаться.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.04.2012, 00:14     Оптимизация работы метода класса с объектами класса [C++] #4
где-то у вас в другом месте проблема. тот код, который вы тут написали выполняется почти мнгновенно. именно такой код на общую производительность проекта не должен влиять. проблемы будут в других местах. а то, что у вас сейчас это 5 минут выполняется - это очень странно. вы наверно что-то напутали
volchonokilli
4 / 4 / 0
Регистрация: 04.01.2012
Сообщений: 41
25.04.2012, 00:19  [ТС]     Оптимизация работы метода класса с объектами класса [C++] #5
Цитата Сообщение от DU Посмотреть сообщение
где-то у вас в другом месте проблема. тот код, который вы тут написали выполняется почти мнгновенно. именно такой код на общую производительность проекта не должен влиять. проблемы будут в других местах. а то, что у вас сейчас это 5 минут выполняется - это очень странно. вы наверно что-то напутали
Ох, действительно, я случайно вставил у себя в коде cout.
Боже, иногда ошибки бывают там, где их точно не ожидаешь ><

Ну да ладно, раз всё-таки я создал тему, не подскажите мне алгоритм создания кругов разных размерностей?
Где размерность - некое случайное число больше единицы.
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
25.04.2012, 00:23     Оптимизация работы метода класса с объектами класса [C++] #6
чтобы было еще быстрее можно избавиться от change() и заменить ее конструктором по умолчанию
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.04.2012, 00:24     Оптимизация работы метода класса с объектами класса [C++] #7
под размерностью имеется в виду радиус? или вам нужны n-мерные круги? ну генерите радиусы случайным образом. вот и будут круги с случайным радиусов. функия rand умеет генерить псевдослучайное число. если она не устраивает, нужно это отдельно в сети искать, как нагенерить что-то максимально случайно.
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
25.04.2012, 00:24     Оптимизация работы метода класса с объектами класса [C++] #8
Можно избежать лишних копий, в принципе
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int num = 0;
 
int main() {
    class tile {
    public:
        tile() : num(::num++), mapp('\xDB') {}
        
    private:
        int num;
        char mapp;
    };
    
    
    tile t[25000];
    
}
Только непонятен смысл оптимизации такого крошечного кусочка кода. Да и ваш изначальный код вроде должен выполниться достаточно быстро.
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
25.04.2012, 00:27     Оптимизация работы метода класса с объектами класса [C++] #9
наверно вам нужно что-то типа этого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class tile
{
public:
  tile() : id(num), mapp('\xDB')
  {
      ++ num;
  }
 
private:
  int id;
  char mapp;
  static int num;
};
 
int tile::num = 0;
volchonokilli
4 / 4 / 0
Регистрация: 04.01.2012
Сообщений: 41
25.04.2012, 00:33  [ТС]     Оптимизация работы метода класса с объектами класса [C++] #10
Спасибо за ответы, я только начал работать с классами более плотно, на будущее буду знать

Цитата Сообщение от DU Посмотреть сообщение
под размерностью имеется в виду радиус? или вам нужны n-мерные круги? ну генерите радиусы случайным образом. вот и будут круги с случайным радиусов. функия rand умеет генерить псевдослучайное число. если она не устраивает, нужно это отдельно в сети искать, как нагенерить что-то максимально случайно.
Я имел в виду, по какой формуле делается круг, например, радиус его 8, и внутри он должен быть тоже "заполнен".
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
25.04.2012, 11:20     Оптимизация работы метода класса с объектами класса [C++] #11
Цитата Сообщение от DU Посмотреть сообщение
а оптимизация - вообще зло.
Ха-ха-ха
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
25.04.2012, 13:21     Оптимизация работы метода класса с объектами класса [C++] #12
Kuzia domovenok, Ничего смешного. Преждевременная оптимизация - зло. Оптимизация не по теме - тоже. Компилятор может оптимизировать куда лучше программиста.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
25.04.2012, 17:42     Оптимизация работы метода класса с объектами класса [C++] #13
Цитата Сообщение от ForEveR Посмотреть сообщение
Kuzia domovenok, Ничего смешного. Преждевременная оптимизация - зло. Оптимизация не по теме - тоже. Компилятор может оптимизировать куда лучше программиста.
тот кто это сказал, очевидно имел в виду мелкую оптимизацию по мелочам, вроде параноидальной замены всех умножений на сдвиги и сложения,
всех постинкрементов на преинкременты
и прочую мелкую ерунду.
Пользоваться же оптимальными высокоуровневыми алгоритмами надо всегда
И гораздо хуже будет, если после того как программа написана выясняется, что производительность недостаточна
и требуется заменить всё, начиная с основных типов данных
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2012, 17:47     Оптимизация работы метода класса с объектами класса [C++]
Еще ссылки по теме:

Работа с объектами внутри класса. - C++
Вот два класса подскажите что здесь не так. Функция sh класса Engine должна вызвать функцию showhello класса Obj #pragma once ...

Наполнить свойство класса(массив) объектами - C++
Компилятор выдает сообщение Constructor for 'Classroom' must explicitly initialize the member 'students' which does not have a default...

Не получается заполнить вектор объектами класса - C++
Здравствуйте. Решения для своей проблемы на форуме не нашел, по этому пришлось создать тему. Есть класс: class CAnimate { private: ...

Работа с объектами класса: вывод на консоль, подсчет суммы - C++
Здравствуйте, уважаемые программисты. Возникла проблема: 1) Не получается вывести на экран массив структур; 2) Как с помощью цикла...

Инициализация вектора с несколькими типами данных или объектами класса - C++
Задача наподобие книжной библиотеки. Есть класс Book в котором перечислены автор,название,год издания. Хочу создать отдельный класс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.04.2012, 17:47     Оптимизация работы метода класса с объектами класса [C++] #14
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Пользоваться же оптимальными высокоуровневыми алгоритмами надо всегда
Сами алгоритмы надо оптимизировать, да.
Их реализацию - только когда код уже гарантированно работает и инкапсулирован от всего внешнего мира. До этого же лучше пессимизировать в пользу понятности кода, чем оптимизировать за счет этой же понятности.
Суть в том, что сделать из быстрого кода корректный намного сложнее, чем из корректного быстрый.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
всех постинкрементов на преинкременты
и прочую мелкую ерунду.
Замена постинкрементов на преинкременты - это хороший стиль и отсутствие пессимизации, а не оптимизация.
Yandex
Объявления
25.04.2012, 17:47     Оптимизация работы метода класса с объектами класса [C++]
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru