Форум
Философия программирования
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, vdimas, Вы писали: V>Здравствуйте, Ikemefula, Вы писали: V>>>Предлагаю написать тест тебе. Пусть будет 1500 FIFO очередей. В каждую очередь поступает 100 пакетов в секунду. Длина очереди - порядка 500ms. По истечении этого времени пакет из очереди изымается и больше не нужен. Помимо этого, пусть к каждой очереди будет приклеплен "живой" граф из полусотни объектов. I>>Для GC это мизер :-) Издержки на очереди много больше издержек на выделение памяти. Я накидал тест, как ты говоришь, и в ём инстанцирований в 8 раз меньше, нежели без очередей, V>Всё с вами ясно... Умудриться написать очередь, которая в 8 раз тяжелее GC - это весчь... ))) V>У нас она намного легче, чем GC. Не пробовал такую штуку, как "интрузивный список"? I>>А то что вы храните ссылки на пустые списки - это ваша проблема. V>Этот пустой список в моем варианте - один на всех. I>>Как экономию памяти это можно принять, правда не ясно, зачем вообще хранить ссылку на пустой список :xz: V>Рядом ответил на этот же вопрос от тебя же. V>>>Интересно глянуть нагрузку процессора в таком выхолощенном примере, учитывая, что в реальном примере пакеты приходят по сети и уходят в сеть и на каждый пакет есть кое-какая небесплатная логика. I>>Так тест будет а то опять окажется что у тебя условие снова изменилось ? V>Дык, ты не привел своих данных. Сколько сообщений в секунду ты выжал на выхолощенном примере? V>А мне сюда исходники ложить, чтобы ты их тестировал или как? V>>>Я привел конкретные цифры, на которых GC ложился навзничь (техника 5-тилетней давности, как и задача). Проблемы были именно в GC, потому что переиспользование объектов это дело лечит. I>>Проблемы оттого что вы хранили ссылки на пустые коллекции. V>Не только. Проблемы от того, что мы храним сами сообщения. Проблемы от того, что сами сообщения тоже представляли из себя "унутре" граф объектов. V>В общем, лечение было многостадийное. Объекты внутри "выпрямлялись". Те объекты по сценарию, которые переживают 0-е поколение - переиспользовались. Разумеется, рано или поздно объекты из пула они вообще уходят во 2-е поколение и GC их "не видит", поэтому такое большое кол-во объектов его перестает напрягать. Главное в этих объектах - ссылки не дергать. Поэтому, сообщения без дополнительных полей берутся из одного пула, а с полями - из другого. То бишь фактически такое присвоение пустого списка вообще идет однократное в момент создания объекта и затем при переиспользовании из пула никаких лишних телодвижений. В "разогретой" системе фактически никаких new. Операции с сокетами были переписаны на интеропе на свой интерфейс, бо родной дотнетный корявый и тормозной.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …