Встроенная коллекция объектов приложения имеет простые типы содержимого, которые могут использоваться приложениями по умолчанию («ключ»). Ниже приведены некоторые опыт в создании кеша по содержанию и статичным объектам объектов приложения ASP JavaScript. Давайте узнаем больше об этом ниже!
При использовании Application.contents вы можете использовать только уродливые, такие как:
для (var i = 0; i <15000; i ++) {
Application.lock ();
// application.contents (i) = "sdfdsffdsaf";
Приложение (i) = "sdfdsffdsaf";
Application.unlock ();}
Здесь я храню строки 1,5 Вт в приложении.
После использования Application.staticObjects вместо этого:
Определите словарь в качестве статика для хранения данных, потому что StaticObject не допускает прямой доступ.
<Object id = "dict" Runat = "server" scope = "Application" Program = "scripting.dictionary"> </object>
Scripting.dictionary сам очень быстр и не окажет большого влияния на сравнение скорости сбора StaticObjects.
Скорость словаря:
var d = new ActivexObject ("scripting.dictionary");
для (var i = 0; i <15000; i ++) {
D.Item (i) = "sdfdsffdsaf";}
1,5 Вт интерполяция, 172 мс
Конечно, пользовательский объект var d = new Object (); d [i] = .. это быстрее, 1,5 Вт времена стоит всего 80-90 мс, но функция намного слабее, поэтому вы все еще используете словарь.
См. Официальный тест ниже
для (var i = 0; i <15000; i ++) {
Application.lock ();
Application.staticObjects ("dict"). Item (i) = "sdfdsffdsaf";
Application.unlock ();}
Время до 6953 мс. Первоначально считается, что скорость доступа в сборы StaticObjects не может соответствовать требованиям кеша. Эта скорость почти такая же, как и время, когда Ado oledb читает SQL Server 2000.
Тем не менее, я не планирую сдаваться немедленно, потому что преимущество статических объявлений заключается в том, что он может хранить объекты, а словарь также может хранить другие объекты, которые могут использоваться в качестве объектов кэша, а не только данных.
Я помещаю объект в Application.staticObjects ("dict"):
Application.StaticObjects ("dict"). Item ("O") = new Object ();
для (var i = 0; i <15000; i ++) {
Application.lock ();
Application.staticObjects ("dict"). Item ("O") [i] = "sdfdsffdsaf";
Application.unlock ();}
6656 мс, немного быстрее. Еще один слой объекта не замедляет скорость. Медленная скорость связана не из -за сложной структуры, а из -за доступа к занятию статических объектов.
Предварительное хранилище дикта
var T = Application.StaticObjects ("dict");
для (var i = 0; i <15000; i ++) {
Application.lock ();
t.item ("o") [i] = "sdfdsffdsaf";
Application.unlock ();}
3094 мс, успешно сократили время более чем на половину. Что, если стратегия предварительной экономии в JS также предварительно выберевает T.Item ("O")?
var T = Application.staticObjects ("dict"). item ("O");
для (var i = 0; i <15000; i ++) {
Application.lock ();
t [i] = "sdfdsffdsaf";
Application.unlock ();}
125 мс, наконец, преуспели, только половина применения. Контента. Кажется, что время в основном потрачено на получение «ссылок», а не статизирует область памяти медленно. StaticObjects имеют лучшие меры безопасности, чем содержание, потому что необходимо хранить объекты.
Опираясь на мощные функции словаря, соответственно инкапсулирует его и получайте доступ к нему, используя популярные методы, такие как Put (), get (), содержит () и т. Д., Это мощный кэш.
//// Замечание
Я инкапсулировал компонент. Написанный ASP JavaScript, отправил его, если у вас будет время, поэтому я буду здесь сегодня.
Была протестирована скорость, на которую ссылаются Contens и StaticObjects. Это было 0 мс в 20 раз, в 100 раз превышающей скорость примерно в 5 раз, а 500-1500 раз в 10 раз превышает разницу в скорости. Однако доступ после приобретения не будет затронут.
Некоторые из опытов в создании кэша в объектах приложения ASP JavaScript и StaticObjects представлены для вас здесь. Прочитав это, вы получите большую пользу?