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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

《軟件開發(fā)性能優(yōu)化系列》之類型系統(tǒng)

2019-11-17 03:50:25
字體:
供稿:網(wǎng)友
1、 避免無意義的變量初始化動作
      CLR保證所有對象在訪問前已初始化,其做法是將分配的內(nèi)存清零。因此,不需要將變量重新初始化為0、false或null。



//Generally expert 10 or less items
PRivate HashTable _items = null;
private NameValueCollection = _queryString = null;
private string _siteUrl = null;
private Uri _currentUri;
string rolesCacheKey = null;
string authenticationType = "forms";
bool  _isUrlRewritten = false;
string _rawUrl = null;

HttpContext _httpContext = null
DateTime requestStarTime = DateTime.Now;


      需要注意的是:方法中的局部變量不是從堆而是從棧上分配,所以C#不會做清零工作。如果使用了未賦值的局部變量,編譯期間即會報警。不要因為有這個印象而對所有類的成員變量也做賦值動作,兩者的機(jī)理完全不同!

  
2、 ValueType 和 ReferenceType


(1)、 以引用方式傳遞值類型參數(shù)


值類型從調(diào)用棧分配,引用類型從托管堆分配。當(dāng)值類型用作方法參數(shù)時,默認(rèn)會進(jìn)行參數(shù)值復(fù)制,這抵消了值類型分配效率上的優(yōu)勢。作為一項基本技巧,以引用方式傳遞值類型參數(shù)可以提高性能。

private void UseDateByRef(ref DateTime dt){ }
public void foo()
{
      DateTime now = DateTime.Now;
      UseDateByRef(ref now);
}


  
(2)、 為 ValueType 提供 Equals 方法


      .net 默認(rèn)實現(xiàn)的 ValueType.Equals 方法使用了反射技術(shù),依靠反射來獲得所有成員變量值做比較,這個效率極低。如果我們編寫的值對象其 Equals 方法要被用到(例如將值對象放到 HashTable 中),那么就應(yīng)該重載 Equals 方法。

public struct Rectangle
{
   public double Length;
   public double Breadth;
   public override bool Equals ( object ob)
   {
      if (ob is Rectangle)
         return Equels ((Rectangle)ob))
      else
         return false ;
   }
   private bool Equals (Rectangle rect)
   {
       return this .Length == rect.Length && this .Breadth == rect.Breach;
   }
}


(3)、避免裝箱和拆箱


      C#可以在值類型和引用類型之間自動轉(zhuǎn)換,方法是裝箱和拆箱。裝箱需要從堆上分配對象并拷貝值,有一定性能消耗。如果這一過程發(fā)生在循環(huán)中或是作為底層方法被頻繁調(diào)用,則應(yīng)該警惕累計的效應(yīng)。
一種經(jīng)常的情形出現(xiàn)在使用集合類型時。例如:

ArrayList al = new ArrayList();
for ( int i = 0 ; i < 1000 ; i ++ )
{
al.Add(i); // Implicitly boxed because Add() takes an object
}
int f = ( int )al[ 0 ]; // The element is unboxed





     解決這個問題的方法是使用.net2.0支持的泛型集合類型。

0 0 0
(請您對文章做出評價)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 舒城县| 康乐县| 镇安县| 抚州市| 剑河县| 马龙县| 五华县| 星子县| 瓦房店市| 亳州市| 互助| 二连浩特市| 喜德县| 清徐县| 富裕县| 南和县| 比如县| 应城市| 运城市| 新河县| 涿州市| 淅川县| 繁峙县| 康乐县| 伊金霍洛旗| 新闻| 安溪县| 平南县| 霸州市| 醴陵市| 元谋县| 大城县| 泸水县| 兖州市| 长岭县| 深泽县| 南充市| 阿克苏市| 大渡口区| 白山市| 广平县|