Словарь/Клиент Переменные Приложения VS

Существует много причин передать значением, и наличие компилятора оптимизирует Ваше намерение, может взломать Ваш код.

Пример, если вызванная функция изменяет структуру всегда. Если бы Вы предназначили результаты, которые будут пасоваться назад вызывающей стороне затем, то Вы или передали бы указатель/ссылку или возвратили бы его сами.

, Что Вы спрашиваете, компилятор, чтобы сделать измениться поведение из Вашего кода, который считали бы ошибкой компилятора.

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

5
задан Cédric Boivin 20 October 2009 в 18:41
поделиться

3 ответа

Безусловно, загрузка словаря для каждого запроса ASP - определенно плохая идея, и это отрицательно скажется не только на производительности, но и на фрагментации Виртуальная память.

Использование массива вместо этого по-прежнему вызывает ту же проблему, каждый запрос должен выделять всю память, необходимую для его хранения, и он по-прежнему нуждается в заполнении для каждого запроса.

Простым ответом будет да, используйте объект приложения в качестве словаря. Это будет стоить вам намного меньше памяти и процессора. Обратной стороной является ли это противоречие с существующим использованием объекта приложения? Чтобы избежать этой проблемы, вам может потребоваться префикс для ключей.

2
ответ дан 15 December 2019 в 01:05
поделиться

Я бы настоятельно рекомендовал загружать словарь только один раз, поскольку объект Dictionary тяжелый с точки зрения памяти, медленный с точки зрения поиска и большой: не всегда уничтожается в память, когда вы думаете, что это должно быть. Таким образом, даже после того, как пользователь покинул страницу, этот объект все еще может оставаться в памяти в ожидании удаления (даже если вы явно «уничтожите» его). Теперь умножьте это на количество обращений к странице за посещение для каждого пользователя ...

Альтернативным и более легким для памяти методом было бы использование массива - одномерного, если вы можете где-то отслеживать индекс (лучше всего), или двухмерный с функцией поиска, если вам нужно (конечно, если другие будут поддерживать код сейчас или в будущем).

1
ответ дан 15 December 2019 в 01:05
поделиться

Я почти уверен, что создание экземпляра одного словаря сценариев на каждой странице не должно стать проблемой на любом веб-сайте. Если производительность является проблемой, я предлагаю сначала профилировать вашу страницу, чтобы увидеть, в чем проблема. Велика вероятность того, что где-то есть неоптимизированный запрос, для выполнения которого требуется более 100 мс.

Мы запускаем классический сайт ASP, который обрабатывает 200 тыс. Просмотров страниц в день и широко используем scriping.dictionary на каждой странице (25+ экземпляров). Мы используем его как основу для самых разных вещей. У вас есть какой-нибудь пример сценария, чтобы показать, что dict не всегда уничтожается сборщиком мусора? Или поиск медленный по сравнению с любой альтернативой? Единственное неудобство, с которым мы столкнулись, - это отсутствие метода «клонирования».

1
ответ дан 15 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

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