最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP javascript Application對象的Contents和StaticObjects做Cache的一些經驗

 更新時間:2008年05月18日 21:35:39   作者:  
ASP javascript: Application對象的Contents和StaticObjects做Cache的一些結論。 ASP封裝Cache對象,一般都是基于Application的,
Application對象內置集合有為存放簡單類型設計的Contents,默認Application("key")就可以使用。

不過Application.Contents不能存放對象,可以存vbs數組,但是在javascript下甚至數組都不能放。

使用Application.Contents時,只能用丑陋的如:

for(var i=0;i<15000;i++){
    Application.Lock();
       // Application.Contents(i)="sdfdsffdsaf";
        Application(i)="sdfdsffdsaf";
Application.Unlock();}

在這里往Application.Contents存放了1.5w個String,共花費時間234ms.

改用Application.StaticObjects后:
 定義一個Dictionary作為StaticObject,用于存放數據,因為StaticObject是不允許直接訪問的。
  <object id="dict" runat="server" scope="Application" progid="Scripting.Dictionary"></object>

 Scripting.Dictionary本身的速度很快,不會對比較StaticObjects集合速度造成太大影響.

 Dictionary的速度:
    var d=new ActiveXObject("Scripting.Dictionary");
    for(var i=0;i<15000;i++){
        d.Item(i)="sdfdsffdsaf";}
  1.5w次插值,172ms
 當然自定義對象var d=new Object(); d[i]=..更快,1.5w次只要80-90ms,不過功能弱多了,所以還是用字典.

 下面看正式測試
    for(var i=0;i<15000;i++){
        Application.Lock();
        Application.StaticObjects("dict").Item(i)="sdfdsffdsaf";
        Application.Unlock();}
 時間長達6953ms,初步判斷StaticObjects集合的訪問速度是不能滿足Cache的要求了,這個速度和ADO OLEDB讀sql server 2000的時間相差無幾。

 不過還不打算馬上放棄,因為StaticObjects的優(yōu)勢在于可以存放Object,而Dictionary也可以存放其它對象,這樣可以做為緩存對象,而不僅僅是數據。  

我在Application.StaticObjects("dict")里面再放入一個Object:
  Application.StaticObjects("dict").Item("o")=new Object();

    for(var i=0;i<15000;i++){
       Application.Lock();
       Application.StaticObjects("dict").Item("o")[i]="sdfdsffdsaf";
       Application.Unlock();}

  6656ms,快了點點.多一層Object并沒有降低速度,那么速度的慢并非結構復雜,而是StaticObjects的訪問占用。

 把dict的引用預存
 var t=Application.StaticObjects("dict");

    for(var i=0;i<15000;i++){
       Application.Lock();
       t.Item("o")[i]="sdfdsffdsaf";
       Application.Unlock();}

  3094ms,成功的減少一半多點的時間,js中屢試不爽的預存策略,要是把t.Item("o")也預存呢?

 var t=Application.StaticObjects("dict").Item("o");

    for(var i=0;i<15000;i++){
       Application.Lock();
       t[i]="sdfdsffdsaf";
       Application.Unlock();}

  125ms,終于成功了,只有Application.Contents的一半??磥頃r間主要花費在取得'引用',而不是StaticObjects內存區(qū)被保護慢。StaticObjects相對Contents安全措施更好,因為里面要存對象。

  靠Dictionary強大的功能,適當的封裝一下,用put(),get(),contains()等等流行方法訪問,就是一個強大的Cache了。

 ////備注
  我封裝了一個.sct組件;asp javascript寫的,有空發(fā)上來,今天到此。

  測試了取得Contens和StaticObjects引用的速度,在20次時都是0ms,100次大約5倍速度,500-1500次是10倍速度差距。不過取得后存取不受影響。

相關文章

最新評論

麻城市| 阿勒泰市| 盘山县| 泌阳县| 临西县| 鹰潭市| 凤翔县| 仪征市| 枣强县| 彰化县| 从化市| 阿拉善盟| 阿拉善右旗| 江华| 台中市| 沙雅县| 连云港市| 吴江市| 资源县| 囊谦县| 吉林省| 自贡市| 扶风县| 师宗县| 柳河县| 茶陵县| 娱乐| 林口县| 海宁市| 三原县| 江门市| 凤凰县| 花垣县| 富川| 磐石市| 驻马店市| 微山县| 永胜县| 德保县| 鸡西市| 阿克陶县|