Быстрее ли воссоздать объект или сохранить его в переменной сеанса? - PullRequest
3 голосов
/ 11 ноября 2010

Извините, если это кажется очевидным не-нубу.Это быстрее:

  • Воссоздавать экземпляр объекта каждый раз, когда кто-то переходит на страницу во время сеансаэкземпляр в переменной сеанса, когда он впервые создается, а затем всегда извлекайте его оттуда при повторном доступе к странице

Я не уверен, что это окажется «Сколько временикусок нити?вопрос, но если да, то, возможно, вы могли бы сообщить мне, какие факторы влияют на принятие решения?

Ответы [ 5 ]

4 голосов
/ 11 ноября 2010

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

0 голосов
/ 11 ноября 2010

Просто будьте осторожны, стараясь изо всех сил оптимизировать это.Имейте в виду, что хранение элементов в сеансе может быть тяжелым, особенно если на вашем сайте большой трафик.

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

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

В любом случае, разница не будетбыть огромным.

0 голосов
/ 11 ноября 2010

Очевидно, это зависит от того, какие поля у вас есть в объекте, сколько их и как они заполнены.Экземпляр объекта происходит каждый раз, когда вы загружаете страницу, так что это вопрос полей и их источников.

0 голосов
/ 11 ноября 2010

Без измерения я бы сказал, что хранение и получение данных в большинстве случаев должно быть быстрее. Для воссоздания объектов вы должны вызывать, возможно, несколько конструкторов и т. Д., Тогда как получение не должно вызывать какие-либо вызовы функций.

0 голосов
/ 11 ноября 2010

Это, безусловно, зависит от того, сколько логики сделано, когда объект создан. Вы должны сделать несколько тестов с обоими вариантами.

...