хочу невозможного
От: Pavel Dvorkin Россия  
Дата: 08.11.07 11:29
Оценка:
Убедительная просьба — не обвинять меня в незнании основных принципов Явы. Я в Яве новичок, но настолько я ее принципы понимаю.

Есть класс (public и прочее опустил)

class A {
A1 a1;
A2 a2;
// ...
}

В свою очередь

class A1 {
A11 a11;
A12 a12;
// ...
}
и т.д.. В общем, нормальная иерархия.

Проблема в том, что мне надо обеспечить максимальное быстродействие. Сейчас, когда надо, создаются экземпляры

A a = new A();

потом где-то (м.б., в конструкторе, м.б. нет)

a.a1 = new A1(); // или this.a1 = new A1();

a.a1.a11 = new A11();

и т.д. В общем, дергаем менеджер кучи для всех подобъектов, как и положено.

Между тем во всех этих классах в конечном счете есть только числа и текстовые строки. Массивов (не текстовых) нет, классов Явы тоже нет. Для текстовых строк я могу задать максимальный размер, ответственность за переполнение его беру на себя.

В С++ я бы описал все это одним пакетом

// описания A11,A12
class A1 {
A11 a11;
A12 a12;
// ...
};

class A {
A1 a1;
A2 a2;
// ...
};


и вызовом

A a = new A();

создал бы и сам A, и A1 и A11 и т.д. Там в экземпляре сидят экземпляры, а не ссылки.

Мне надо обеспечить максимальное быстродействие. И я хотел бы от этих вложенных new (и последующего освобождения этих блоков GC) избавиться

Понимаю, что такое вряд ли возможно, и все же — может, есть какие-то идеи ?

P.S. Уничтожить всю иерархию и запихать все на свете в один класс — не предлагать
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.