Встроенная коллекция объектов приложения имеет содержимое, предназначенное для хранения простых типов, и может использоваться приложение по умолчанию («ключ»).
Тем не менее, Application.contents не могут хранить объекты и могут хранить массивы VBS, но в JavaScript даже массивы не могут быть размещены.
При использовании Application.contents вы можете использовать только уродливые, такие как:
for (vari = 0; i <15000; i ++) {
Application.lock ();
//Application.contents(I)="sdfdsffdsaf ";
Приложение (i) = "sdfdsffdsaf";
Application.unlock ();}
Здесь я храню строки 1,5 Вт в приложении.
После использования Application.staticObjects вместо этого:
Определите словарь в качестве статика для хранения данных, потому что StaticObject не допускает прямой доступ.
<objectId = "dict" runat = "server" scope = "Приложение" progid = "scripting.dictionary"> </object>
Scripting.dictionary сам очень быстр и не окажет большого влияния на сравнение скорости сбора StaticObjects.
Скорость словаря:
vard = newAcatexObject ("scripting.dictionary");
for (vari = 0; i <15000; i ++) {
D.Item (i) = "sdfdsffdsaf";}
1,5 Вт интерполяция, 172 мс
Конечно, пользовательский объект vard = newobject (); d [i] = .. более быстрее, 1,5 Вт раз требуется только 80-90 мс, но функция намного слабее, поэтому вы все еще используете словарь.
См. Официальный тест ниже
for (vari = 0; i <15000; i ++) {
Application.lock ();
Application.staticObjects ("dict"). Item (i) = "sdfdsffdsaf";
Application.unlock ();}
Время до 6953 мс. Первоначально считается, что скорость доступа в сборы StaticObjects не может соответствовать требованиям кеша. Эта скорость почти такая же, как и время, когда охлаждение читает SQLServer2000.
Тем не менее, я не планирую сдаваться немедленно, потому что преимущество статических объявлений заключается в том, что он может хранить объекты, а словарь также может хранить другие объекты, которые могут использоваться в качестве объектов кэша, а не только данных.
Я помещаю объект в Application.staticObjects ("dict"):
Application.StaticObjects ("dict"). Item ("o") = newObject ();
for (vari = 0; i <15000; i ++) {
Application.lock ();
Application.staticObjects ("dict"). Item ("O") [i] = "sdfdsffdsaf";
Application.unlock ();}
6656 мс, немного быстрее. Еще один слой объекта не замедляет скорость. Медленная скорость связана не из -за сложной структуры, а из -за доступа к занятию статических объектов.
Предварительное хранилище дикта
vart = application.staticObjects ("dict");
for (vari = 0; i <15000; i ++) {
Application.lock ();