国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

ASP javascript Application對(duì)象的Contents和StaticObjects做Cache的一些經(jīng)驗(yàn)

2024-05-04 11:05:13
字體:
供稿:網(wǎng)友

應(yīng)用程序?qū)ο蟮膬?nèi)置集合具有存儲(chǔ)簡(jiǎn)單類型的內(nèi)容,默認(rèn)應(yīng)用程序(“key”)可以使用這些類型,下面是ASP javascript Application對(duì)象的Contents和StaticObjects做Cache的一些經(jīng)驗(yàn),一起進(jìn)入下文了解一下吧!

使用Application.Contents時(shí),只能用丑陋的如:

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

在這里往Application.Contents存放了1.5w個(gè)String,共花費(fèi)時(shí)間234ms.

改用Application.StaticObjects后:
?定義一個(gè)Dictionary作為StaticObject,用于存放數(shù)據(jù),因?yàn)镾taticObject是不允許直接訪問的。
??<object?id="dict"?runat="server"?scope="Application"?progid="Scripting.Dictionary"></object>

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

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

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

?不過還不打算馬上放棄,因?yàn)镾taticObjects的優(yōu)勢(shì)在于可以存放Object,而Dictionary也可以存放其它對(duì)象,這樣可以做為緩存對(duì)象,而不僅僅是數(shù)據(jù)。??

我在Application.StaticObjects("dict")里面再放入一個(gè)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,快了點(diǎn)點(diǎn).多一層Object并沒有降低速度,那么速度的慢并非結(jié)構(gòu)復(fù)雜,而是StaticObjects的訪問占用。

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

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

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

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

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

??125ms,終于成功了,只有Application.Contents的一半。看來時(shí)間主要花費(fèi)在取得'引用',而不是StaticObjects內(nèi)存區(qū)被保護(hù)慢。StaticObjects相對(duì)Contents安全措施更好,因?yàn)槔锩嬉鎸?duì)象。

??靠Dictionary強(qiáng)大的功能,適當(dāng)?shù)姆庋b一下,用put(),get(),contains()等等流行方法訪問,就是一個(gè)強(qiáng)大的Cache了。

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

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

ASP javascript Application對(duì)象的Contents和StaticObjects做Cache的一些經(jīng)驗(yàn)就為各位朋友們介紹到這里了,大家看完之后,是不是受益匪淺呢?

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁强县| 乐业县| 三穗县| 水城县| 宣汉县| 新邵县| 桐城市| 青冈县| 同仁县| 莱芜市| 台中市| 大冶市| 岐山县| 准格尔旗| 安溪县| 渭源县| 承德市| 桂阳县| 潮州市| 慈利县| 万盛区| 博白县| 兰西县| 都安| 深水埗区| 惠来县| 施秉县| 德清县| 大名县| 灌云县| 越西县| 怀远县| 井研县| 宿州市| 晋宁县| 岳普湖县| 甘泉县| 洞头县| 德格县| 繁峙县| 汉川市|