Возможные решения плохого выполнения сериализации

Иногда я использую блоки без имени для изоляции изменяемых вещей, должен был подготовить некоторую неизменную вещь. Вместо того, чтобы иметь маркировку я подверг Блок неизменному объявлению переменной.

final String example;
{
   final StringBuilder sb = new StringBuilder();
   for(int i = 0; i < 100; i++)
     sb.append(i);
   example = sb.toString();

}

, Когда я нахожу некоторое другое использование для блока, или просто думаю, что это находится в пути, я превращаю его в метод.

14
задан redcalx 16 July 2011 в 12:09
поделиться

5 ответов

К сожалению, я знаю только об одном варианте и о другом, работа над которым может стать очень болезненной.

Но он делает только то, что вы хотите, так что он работает максимально быстро.

Удачи.

2
ответ дан 1 December 2019 в 16:39
поделиться

Еще один вариант - агрессивно отключить ViewState для всех элементов управления, которые не затрагиваются при обратных передачах на стороне сервера.

1
ответ дан 1 December 2019 в 16:39
поделиться

You can partially customize your serialization by implementing ISerializable. If you do this for the worst offenders, you won't increase maintenance as much but will still get some of the speedup.

1
ответ дан 1 December 2019 в 16:39
поделиться

Существует стороннее решение: как вы, 20-40 раз.

Это устраняет отражение, которое является причиной замедление, но для списков он поддерживает только несколько собственных типов. Так что для Genreric.List ваших собственных типов необходимо явный код где-нибудь или другой. Например, явные циклы или что-то более умное, что автоматизирует это. В любом случае это довольно просто и не должно быть помехой для огромных преимущества.

1
ответ дан 1 December 2019 в 16:39
поделиться

Мы столкнулись с похожими проблемами и разработали несколько способов повышения производительности. Некоторые из них мы используем в нашем продукте отображения памяти Persistore (в настоящее время бета). В нашем случае мы можем просто получить доступ к сохраненным данным «на месте», потому что они всегда находятся в куче с отображением памяти.

Однако одна «хитрость» состоит в том, чтобы определить данные состояния сеанса (если возможно) как маршалируемые ] class / struct и «сериализовать», которые используют поддержку маршалинга .NET, это может быть действительно очень быстро, но не будет обрабатывать «объектные» графы.

Мы также поддерживаем особую стойкость, основанную на двоичной сериализации, но мы также извлекаем и сохранять метаданные, чтобы управляемый код мог устанавливать / получать поля в сохраняемых данных в памяти во время выполнения без необходимости десериализации всего объекта, это полезно в некоторых настройках (например, g обновления цен на ценные бумаги и акции и т. д.). Наша последняя бета-версия поддерживает сериализацию по сети анонимных типов LINQ , это первая, насколько мне известно.

В любом случае, мы были бы заинтересованы в новых клиентах бета-версии, которые продвигают Проблемы с ASP.NET и веб-производительностью, наша последняя бета-версия очень впечатляет (но не готова до следующей недели).

Если кому-то интересно, просто свяжитесь с нами для получения последней информации о продукте.

Хью Моран

PS : Веб-сайт устарел, продукт выходит далеко за рамки описанного на нем.

0
ответ дан 1 December 2019 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: