Asp.net細微的效率提升
?????????? 相對(duì)于原來(lái)的for語(yǔ)句foreach具有更好的執(zhí)行效率,foreach的平均花費(fèi)時(shí)間只有for的30%。通過(guò)測(cè)試結(jié)果在for和foreach都可以使用的情況下,我們推薦使用效率更高的foreach。另外,用for寫(xiě)入數(shù)據(jù)時(shí)間大約是讀取數(shù)據(jù)時(shí)間的10倍左右;
?????????? ?在asp.net程序中,使用sa賬號(hào)的是一種非常不安全的做法,它具有在數(shù)據(jù)庫(kù)上執(zhí)行任何操作的權(quán)限。黑客可以調(diào)用類似于xp_cmdshell這樣的擴(kuò)展存儲(chǔ)過(guò)程進(jìn)行攻擊;
?????????? 在處理數(shù)據(jù)交互的時(shí)候,盡量將組織SQL語(yǔ)句的處理放到中間層(比如專門(mén)的數(shù)據(jù)操作類、存儲(chǔ)過(guò)程等),這是防止注入式攻擊的有效方法;
?????????? ?避免到服務(wù)器的不必要的往返過(guò)程。使用 Page.IsPostBack 避免對(duì)往返過(guò)程執(zhí)行不必要的處理;
?????????? 一定要禁用調(diào)試模式;
?????????? 一般情況下,讀取大量數(shù)據(jù),對(duì)返回?cái)?shù)據(jù)不做大量處理用SqlDataReader.對(duì)返回?cái)?shù)據(jù)大量處理用DatSet比較合適.對(duì)SqlDataReader和DataSet的選擇取決于程序功能的實(shí)現(xiàn);
?????????? 數(shù)據(jù)綁定建議使用<%# ctype(Container.DataItem,DataRowView).Row("字段名") %>。數(shù)據(jù)量大的時(shí)候可提高幾百倍的速度;
?????????? 使用“短路”的邏輯運(yùn)算
在VB.net的邏輯運(yùn)算中使用 Andalso 代替 And,OrElse 代替Or,
在C#的邏輯運(yùn)算中用使用&& 代替 &,用||代替|.
所謂“短路”運(yùn)算是指-編譯的代碼可以根據(jù)一個(gè)表達(dá)式的計(jì)算結(jié)果跳過(guò)對(duì)另一表達(dá)式的計(jì)算,例如:
邏輯運(yùn)算 if A and B then,其中A和B是表達(dá)式,代碼運(yùn)行時(shí),要分別計(jì)算A 和 B的值,而如果是
if A Andalso B then,A先計(jì)算,如果A的值為true,則不再計(jì)算B的值。這樣如果B的計(jì)算復(fù)雜或
涉及過(guò)程調(diào)用,使用Andalso則會(huì)減小不必要的性能損耗。
對(duì)于or和orelse,情況和上面相同不再?gòu)U話。
?????????? 使用+=、-= 等簡(jiǎn)化操作符
例如原有表達(dá)式 A=A+B
改為A+=B
這樣不僅減少了敲入代碼的數(shù)量,而且由于變量A只出現(xiàn)一次,在運(yùn)行時(shí)也提高了系統(tǒng)的性能
類此的操作符還有*=、"=、/=、&=等
?????????? 使用stringBuilder代替string
string類型在內(nèi)存中是不可變的,對(duì)已經(jīng)定義的string類型的變量所做的任何修改,系統(tǒng)實(shí)際在
內(nèi)存中都是新建一個(gè)string,而sringbuilder class則是在內(nèi)存中新建對(duì)象,對(duì)其操作都是對(duì)這
個(gè)對(duì)象的修改。因此使用stringBuilder代替string會(huì)提高運(yùn)行時(shí)的性能。
?????????? 在for循環(huán)內(nèi)部定義變量
例如:for(int i=1;i<=10;i++)
{
....
}
而不是:int i;
for(i=1;i<=10;i++)
{
....
}
?????????? 設(shè)置Option Strict 啟用
在vs.net中啟用Option Strict,要求代碼中的數(shù)據(jù)類型嚴(yán)格轉(zhuǎn)換,避免由系統(tǒng)轉(zhuǎn)換造成的性能影響
?????????? 在VB.net類型轉(zhuǎn)換時(shí)考慮使用DirectCast代替Ctype
在vb.net中如果將某類型對(duì)象轉(zhuǎn)成其繼承型對(duì)象,例如將一個(gè)“control” 轉(zhuǎn)成一個(gè)textbox時(shí)(textbox從Control繼承)請(qǐng) 使用DirectCast代替Ctype,這會(huì)提高系統(tǒng)性能,但是如果要將一個(gè)Integer轉(zhuǎn)成 String ,則不能 使用,因?yàn)?/span>Integer和String類型不是繼承關(guān)系。
在C#中沒(méi)有和DirectCast相應(yīng)的函數(shù)。
總結(jié)
以上是生活随笔為你收集整理的Asp.net細微的效率提升的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 喷淋管径与喷头数量规范表(喷淋管径与喷头
- 下一篇: 【BIOS大全】释义+设置+精解+释疑—