La collection intégrée d'objets d'application a des contenus conçus pour stocker des types simples, et l'application par défaut ("clé") peut être utilisée.
Cependant, Application.Connts ne peut pas stocker des objets et peut stocker des tableaux VBS, mais en JavaScript, même les tableaux ne peuvent pas être placés.
Lorsque vous utilisez Application.Connts, vous ne pouvez utiliser des laids que tels que:
pour (vari = 0; i <15000; i ++) {
Application.lock ();
//Application.Contents(i)="sdfdsffdsaf ";
Application (i) = "sdfdsffdsaf";
Application.unlock ();}
Ici, je stockage des chaînes de 1,5 W dans Application. Contents, qui ont pris un total de 234 ms.
Après avoir utilisé Application.StaticObjects à la place:
Définissez un dictionnaire comme un statibject pour stocker les données, car StaticObject ne permet pas l'accès direct.
<ObjectId = "dict" runat = "server" scope = "application" progId = "scripting.dictionary"> </ object>
Scripting.Dictionary lui-même est très rapide et n'aura pas beaucoup d'impact sur la comparaison de la vitesse de collecte des StaticObjects.
Vitesse du dictionnaire:
vard = newActiveXObject ("scripting.dictionary");
pour (vari = 0; i <15000; i ++) {
d.item (i) = "sdfdsffdsaf";}
1,5 W interpolation, 172 ms
Bien sûr, l'objet personnalisé vard = newObject (); d [i] = .. est plus rapide, 1,5 W fois ne prend que 80 à 90 ms, mais la fonction est beaucoup plus faible, vous utilisez donc toujours un dictionnaire.
Voir le test officiel ci-dessous
pour (vari = 0; i <15000; i ++) {
Application.lock ();
Application.staticObjects ("dict"). Item (i) = "sdfdsffdsaf";
Application.unlock ();}
Le temps est aussi long que 6953 ms. Il est initialement jugé que la vitesse d'accès de la collection StaticObjects ne peut pas répondre aux exigences du cache. Cette vitesse est presque la même que le moment où AdooledB lit SQLServer2000.
Cependant, je ne prévois pas d'abandonner immédiatement, car l'avantage de StaticObjects est qu'il peut stocker des objets, et le dictionnaire peut également stocker d'autres objets, qui peuvent être utilisés comme objets de cache, pas seulement des données.
Je mets un objet dans application.staticObjects ("dict"):
Application.staticObjects ("dict"). Item ("o") = newObject ();
pour (vari = 0; i <15000; i ++) {
Application.lock ();
Application.staticObjects ("dict"). Item ("o") [i] = "sdfdsffdsaf";
Application.unlock ();}
6656 ms, un peu plus vite. Une autre couche d'objet ne ralentit pas la vitesse. La vitesse lente n'est pas due à la structure complexe, mais à cause de l'occupation d'accès des staticobjects.
Référence du pré-magasin
vart = application.staticObjects ("dict");
pour (vari = 0; i <15000; i ++) {
Application.lock ();