Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Iskander
Зарегистрирован: 01.04.2005 Сообщения: 3 Откуда: Тула <-> Москва
|
Добавлено: Пт Апр 01 2005 15:20 Заголовок сообщения: Вопрос по оптимизации кода и памяти |
|
|
Люди, помогите советом.
Создаю приложение, которое кушает памяти мало, но часто.
Что делал:
1. создаю класс, объявляю в нём функции, описываю ф-ции
... MyClass::Function()
{
double A;
double B[5];
и т.п.
}
2. меня заглючило, что ежели эту функцию вызывать оч. часто, то соответственно часто будет выделяться память под объявляемые внутри неё переменные, а это, в свою очередь, будет тормозить вычисления (затраты там на выделение памяти) и фрагментировать память, что плохо.
3. стал все эти переменные объявлять в теле класса:
class MyClass
{
public:
...
double A;
double B[5];
}
ибо думаю, что память будет выделена 1 раз в одном месте при создании класса, а потом будет происходить только обращение к ней.
Отсюда вопрос:
имеет ли смысл городить такие городушки и верно ли то, что я описал? В особенности меня интересует 2 пункт: быть может я не прав, и компилятор в этом случае (при создании экземпляра класса) выделяет всю необходимую память для функции Fuction и её переменных единожды только, а не при каждом обращении? |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Пт Апр 01 2005 18:03 Заголовок сообщения: Оттрассировать лень, чтоб убедиться? |
|
|
Память под локальные переменные (любой) функции выделяется из динамического пула
------------------------
Оттрассировать лень, чтоб убедиться? |
|
Вернуться к началу |
|
|
DmitryShm
Зарегистрирован: 17.11.2003 Сообщения: 211 Откуда: Казань
|
Добавлено: Сб Апр 02 2005 19:05 Заголовок сообщения: все правильно |
|
|
Все правильно, хорошим стилем как раз будет сохранять важные вычисления в объетах-полях класса. И если тебя интересуют подобные затраты памяти, то сделай метод с вычислениями inline, и тогда, один раз потратившись, заюзаешь все пучком. _________________ love IT |
|
Вернуться к началу |
|
|
Chea
Зарегистрирован: 05.04.2005 Сообщения: 1
|
Добавлено: Вт Апр 05 2005 21:37 Заголовок сообщения: |
|
|
При работе с локальными переменными накладных расходов при таботе с памятью нет т.к. память под локальные переменные выделяется в стеке. |
|
Вернуться к началу |
|
|
Iskander
Зарегистрирован: 01.04.2005 Сообщения: 3 Откуда: Тула <-> Москва
|
Добавлено: Ср Апр 06 2005 08:47 Заголовок сообщения: спасибо всем |
|
|
Спасибо всем! Оставлю всё как есть, ибо привык. |
|
Вернуться к началу |
|
|
|