Re[36]: Java vs C# vs C++
От: · Великобритания  
Дата: 09.10.15 20:46
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

dot>>ну например List<MyObj>

EP>1. На GC всё равно будет висеть граф множества объектов, пусть и меньшего размера.
Ничего, и не такое жевал.

EP>2. Теперь на этих ссылках будут висеть финализаторы, так? Для того чтобы знать когда очищать off-heap. То есть теперь ко всему прочему ещё и освобождение будет линейным.

Можно и финализаторы, а можно и явно реализовать delete, как в плюсах. Какое освобождение сделаешь, такое и будет.

EP>3. Лишние индерекции внутри List никуда не делись.

List будет с большим числом элементов, иначе смысла извращаться нет. А на фоне этого большого числа данных один индирект не будет заметен в микроскоп.

EP>>>И кто и как создаст эти newMyObj?

dot>>Программист напишет. Притом можно описывать, скажем, интерфейсы, а их имплементации генерить при запуске.
EP>"в общем-то и вся разница по факту." — да?
EP>Придётся расписывать/генерировать не только пользовательские классы, но и воплощения всех контейнеров/алгоритмов в которых они участвую — иначе тормоза.
EP>Покажи какую-нибудь библиотеку/утилиту которая берёт всё это на себя.
Берёт что? Код-то тривиальный.
Вместо
class BusinessData
{
  private int a;
  private int b;
  int getA() {return a}
  int getB() {return b}
}

пишем
class BusinessData
{
  private Buffer buf;//замаплен например сразу на приходящий из сети блок байт или offheap хранилище или ещё чего.
  private int pos;
  int getA() {return buf.getInt(pos)}
  int getB() {return buf.getInt(pos+4)}
}

List<> просто проставляет pos соответственно.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.