欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

asp.net 程序性能優(yōu)化的七個方面 (c#(或vb.net)程序改進)

 更新時間:2009年03月03日 22:59:43   作者:  
在我們開發(fā)asp.net過程中,需要注意的一些細節(jié),以達到我們優(yōu)化程序執(zhí)行效率。
1、使用值類型的ToString方法
  在連接字符串時,經常使用"+"號直接將數字添加到字符串中。這種方法雖然簡單,也可以得到正確結果,但是由于涉及到不同的數據類型,數字需要通過裝箱操作轉化為引用類型才可以添加到字符串中。但是裝箱操作對性能影響較大,因為在進行這類處理時,將在托管堆中分配一個新的對象,原有的值復制到新創(chuàng)建的對象中。
  使用值類型的ToString方法可以避免裝箱操作,從而提高應用程序性能。
int num=1;
string str="go"+num.ToString();
2、運用StringBuilder類
  String類對象是不可改變的,對于String對象的重新賦值在本質上是重新創(chuàng)建了一個String對象并將新值賦予該對象,其方法ToString對性能的提高并非很顯著。
  在處理字符串時,最好使用StringBuilder類,其.NET 命名空間是System.Text。該類并非創(chuàng)建新的對象,而是通過Append,Remove,Insert等方法直接對字符串進行操作,通過ToString方法返回操作結果。
  其定義及操作語句如下所示:
int num;
System.Text.StringBuilder str = new System.Text.StringBuilder(); //創(chuàng)建字符串
str.Append(num.ToString()); //添加數值num
Response.Write(str.ToString); //顯示操作結果
3、使用 HttpServerUtility.Transfer 方法在同一應用程序的頁面間重定向
  采用 Server.Transfer 語法,在頁面中使用該方法可避免不必要的客戶端重定向(Response.Redirect)。
4、避免使用ArrayList。
因為任何對象添加到ArrayList都要封箱為System.Object類型,從ArrayList取出數據時,要拆箱回實際的類型。建議使用自定義的集合類型代替ArrayList。asp.net 2.0提供了一個新的類型,叫泛型,這是一個強類型,使用泛型集合就可以避免了封箱和拆箱的發(fā)生,提高了性能。
5、使用HashTale代替其他字典集合類型
(如StringDictionary,NameValueCollection,HybridCollection),存放少量數據的時候可以使用HashTable.
6、為字符串容器聲明常量,不要直接把字符封裝在雙引號" "里面。
//避免
MyObject obj = new MyObject();
obj.Status = "ACTIVE";
//推薦
const string C_STATUS = "ACTIVE";
MyObject obj = new MyObject();
obj.Status = C_STATUS;
7、不要用ToUpper(),ToLower()轉換字符串進行比較,用String.Compare代替,它可以忽略大小寫進行比較.
例:
const string C_VALUE = "COMPARE";
if (String.Compare(sVariable, C_VALUE, true) == 0)
{
Console.Write( "相同");
}
也可以用str == String.Empty或者str.Length == 0判斷是否為空。(注意判斷輸入數據的長度,可防止sql注入式攻擊)
將String對象的Length屬性與0比較是最快的方法,避免不必要的調用 ToUpper 或 ToLower 方法。
8、類型轉化Int32.TryParse()優(yōu)于Int32.Parse()優(yōu)于Convert.ToInt32()。
建議.NET1.1下用Int32.Parse();.NET2.0用Int32.TryParse()。
因為:
Convert.ToInt32 會把最終的解析工作代理給 Int32.Parse;
Int32.Parse 會把最終的解析工作代理給Number.ParseInt32;
Int32.TryParse 會把最終的解析工作代理給Number.TryParseInt32。
9、如果只是從XML對象讀取數據,用只讀的XPathDocument代替XMLDocument,可以提高性能
//避免
XmlDocument xmld = new XmlDocument();
xmld.LoadXml(sXML);
txtName.Text = xmld.SelectSingleNode( "/packet/child").InnerText;
//推薦
XPathDocument xmldContext = new XPathDocument(new StringReader(oContext.Value));
XPathNavigator xnav = xmldContext.CreateNavigator();
XPathNodeIterator xpNodeIter = xnav.Select( "packet/child");
iCount = xpNodeIter.Count;
xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, false);
while(xpNodeIter.MoveNext())
{
sCurrValues += xpNodeIter.Current.Value+ ",";
}
10、避免在循環(huán)體里聲明變量,應該在循環(huán)體外聲明變量,在循環(huán)體里初始化。
C#程序開發(fā)要遵循的一個基本原則就是避免不必要的對象創(chuàng)建
//避免
for(int i=0; i<10; i++)
{
SomeClass objSC = new SomeClass();
}
//推薦
SomeClass objSC = null;
for(int i=0; i <10; i++)
{
objSC = new SomeClass();
}
11、捕獲指定的異常,不要使用通用的System.Exception.
//避免
try
{
<some logic>
}
catch(Exception exc)
{
<Error handling>
}
//推薦
try
{
<some logic>
}
catch(System.NullReferenceException exc)
{
<Error handling>
}
catch(System.ArgumentOutOfRangeException exc)
{
<Error handling>
}
catch(System.InvalidCastException exc)
{
<Error handling>
}
12、使用Try...catch...finally時, 要在finally里釋放占用的資源如連接,文件流等
不然在Catch到錯誤后占用的資源不能釋放。
try
{}
catch
{}
finally
{
conntion.close();
}
13、不要用Exception控制程序流程
有些程序員可能會使用異常來實現一些流程控制。例如:
try{
result=100/num;
}
Catch(Exception e)
{
result=0;
}
但實際上,Exception是非常消耗系統(tǒng)性能的。除非必要,不應當使用異??刂苼韺崿F程序流程。上面的代碼應當寫為:
if(num!=0)
result=100/num;
else
result=0;
14、避免使用遞歸調用和嵌套循環(huán),使用他們會嚴重影響性能,在不得不用的時候才使用。
15、禁用VB.net和Jscript動態(tài)數據類型
應當始終顯示地申明變量數據類型,這能夠節(jié)約程序的執(zhí)行時間。以往,開發(fā)人員喜歡使用 Visual Basic、VBScript 和 JScript 的原因之一就是它們所謂“無類型”的性質。變量不需要顯式類型聲明,并能夠簡單地通過使用來創(chuàng)建它們。當從一個類型到另一個類型進行分配時,轉換將自動執(zhí)行。不過,這種便利會大大損害應用程序的性能。
如:
為了獲得最佳的性能,當聲明 JScript .NET 變量時,請為其分配一個類型。例如,var A : String;

相關文章

  • asp.net 對中文漢字的加密與解密代碼

    asp.net 對中文漢字的加密與解密代碼

    一般的加密方法,解密比較復雜,所有大家看可以嘗試用下面的代碼。
    2009-05-05
  • asp.net中3種驗證碼示例(實現代碼)(數字,數字字母混和,漢字)

    asp.net中3種驗證碼示例(實現代碼)(數字,數字字母混和,漢字)

    asp.net中3種驗證碼示例代碼,分別是數字,數字字母混和,漢字,需要的朋友可以參考下
    2012-10-10
  • ASP.NET中GridView 重復表格列合并的實現方法

    ASP.NET中GridView 重復表格列合并的實現方法

    本文通過GridView 和 Repeater 解決有關表格顯示數據重復的數據列和并的方法,非常實用,感興趣的朋友一起看下吧
    2016-08-08
  • c# datatable用法總結

    c# datatable用法總結

    在項目中經常用到DataTable,如果DataTable使用得當,不僅能使程序簡潔實用,而且能夠提高性能,達到事半功倍的效果,現對DataTable的使用技巧進行一下總結。
    2010-09-09
  • ASP.NET Core處理管道的深入理解

    ASP.NET Core處理管道的深入理解

    這篇文章主要給大家介紹了關于ASP.NET Core處理管道的深入理解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • .Net?Core使用layui多文件上傳

    .Net?Core使用layui多文件上傳

    這篇文章主要為大家詳細介紹了.Net?Core使用layui多文件上傳,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • MVVM模式下WPF動態(tài)綁定展示圖片

    MVVM模式下WPF動態(tài)綁定展示圖片

    這篇文章主要為大家詳細介紹了MVVM模式下WPF動態(tài)綁定展示圖片的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • asp.net安全、實用、簡單的大容量存儲過程分頁

    asp.net安全、實用、簡單的大容量存儲過程分頁

    昨晚研究到2點多,對網絡上主流的分頁存儲過程大體看了一遍,但對安全以及如何使用很多文章都沒有過多的提及,而我要在這些文章的基礎上總結出一個比較實用的分頁存儲過程,方便大家在以后的項目中使用。
    2009-04-04
  • 通過jmeter壓測surging的方法

    通過jmeter壓測surging的方法

    Jmeter是Apache開源的一個使用純Java編寫的壓力測試工具,它最初是為測試web應用程序而設計的,但后來擴展到了其他測試功能,這篇文章主要介紹了通過jmeter壓測surging的相關知識,需要的朋友可以參考下
    2022-07-07
  • 充分利用ASP.NET的三種緩存提高站點性能的注意方法

    充分利用ASP.NET的三種緩存提高站點性能的注意方法

    充分利用ASP.NET的三種緩存提高站點性能的注意方法...
    2007-09-09

最新評論