La colección incorporada de objetos de aplicación tiene tipos simples de contenido, que se pueden usar por aplicaciones predeterminadas ("clave"). A continuación se presentan algunas experiencias para hacer caché por contenido y objetos de aplicación de ASP JavaScript. ¡Aprendamos más al respecto a continuación!
Al usar aplicaciones. Contents, solo puede usar los feos como:
para (var i = 0; i <15000; i ++) {
Application.lock ();
// Application.Contents (i) = "SdfdsffdSaf";
Aplicación (i) = "sdfdsffdsaf";
Application.unlock ();}
Aquí almaceno de 1.5w cadenas en aplicaciones. Contents, que tomaron un total de 234 ms.
Después de usar Application.StaticObjects en su lugar:
Defina un diccionario como un objeto static para almacenar datos, porque StaticObject no permite el acceso directo.
<Object id = "dict" runat = "server" scope = "aplicación" programa = "scripting.dictionary"> </ject>
Scripting.Dictionary en sí es muy rápido y no tendrá mucho impacto en la comparación de la velocidad de recolección StaticObjects.
Velocidad del diccionario:
var d = new ActiveXObject ("scripting.dictionary");
para (var i = 0; i <15000; i ++) {
d.Item (i) = "Sdfdsffdsaf";}
1.5W Interpolación, 172 ms
Por supuesto, el objeto personalizado var d = new Object (); D [i] = .. es más rápido, 1.5W veces solo cuestan 80-90 ms, pero la función es mucho más débil, por lo que todavía usa un diccionario.
Vea la prueba oficial a continuación
para (var i = 0; i <15000; i ++) {
Application.lock ();
Application.staticObjects ("dict"). Item (i) = "sdfdsffdsaf";
Application.unlock ();}
El tiempo es hasta 6953 ms. Inicialmente se juzga que la velocidad de acceso de la colección StaticObjects no puede cumplir con los requisitos de caché. Esta velocidad es casi la misma que el momento en que ADO OLEDB lee SQL Server 2000.
Sin embargo, no planeo rendirme de inmediato, porque la ventaja de StaticObjects es que puede almacenar objetos, y el diccionario también puede almacenar otros objetos, que pueden usarse como objetos de caché, no solo datos.
Puse un objeto en Application.StaticObjects ("dict"):
Application.staticObjects ("dict"). Item ("o") = new Object ();
para (var i = 0; i <15000; i ++) {
Application.lock ();
Application.staticObjects ("dict"). Item ("o") [i] = "sdfdsffdsaf";
Application.unlock ();}
6656ms, un poco más rápido. Una capa más de objeto no ralentiza la velocidad. La velocidad lenta no se debe a la estructura compleja, sino a la ocupación de acceso de los objecos estáticos.
Referencia de DICT previa a la tienda
var t = Application.StaticObjects ("dict");
para (var i = 0; i <15000; i ++) {
Application.lock ();
T.Item ("O") [i] = "SdfdsffdSaf";
Application.unlock ();}
3094 ms, redujo con éxito el tiempo en más de la mitad. ¿Qué pasa si la estrategia previa a la ahorro en JS también es T.Item ("O") previa a la salvación?
var t = Application.StaticObjects ("dict"). item ("o");
para (var i = 0; i <15000; i ++) {
Application.lock ();
t [i] = "sdfdsffdsaf";
Application.unlock ();}
125 ms, finalmente tuvo éxito, solo la mitad de la aplicación. Contentos. Parece que el tiempo se dedica principalmente a obtener 'referencias', en lugar de que el área de memoria de los cuestiones estáticas está protegida lentamente. Los objetivos statics tienen mejores medidas de seguridad que contenidos porque los objetos deben almacenarse.
Confiar en las poderosas funciones del diccionario, encapsularlo adecuadamente y acceder a él utilizando métodos populares como put (), get (), contiene (), etc., es un caché poderoso.
////Observación
Encapsulé un componente .SCT; Escrito por ASP JavaScript, lo envíe si tiene tiempo, así que estaré aquí hoy.
Se probó la velocidad a la referencia por Contens y StaticObjects. Fue a 0 ms en 20 veces, 100 veces la velocidad fue aproximadamente 5 veces y 500-1500 veces es la diferencia de velocidad 10 veces la velocidad. Sin embargo, el acceso después de la adquisición no se verá afectado.
Aquí se le presentan algunas de las experiencias para hacer caché en los objetos de aplicación ASP JavaScript y los objecos staticOl. Después de leer esto, ¿te beneficiarás mucho?