久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

泛型的性能優(yōu)勢(shì)

 昵稱10504424 2013-07-16
 最近在看《CLR via C#》,有關(guān)泛型的優(yōu)勢(shì),,感覺(jué)說(shuō)的挺不錯(cuò)的特記錄一下,,以供以后查看,。

    泛型為開(kāi)發(fā)人員提供的優(yōu)勢(shì):

  1. 源代碼保護(hù)
  2. 類型安全
  3. 更清晰的代碼
  4. 更佳的性能

為了理解泛型的優(yōu)勢(shì),寫(xiě)了一個(gè)程序來(lái)比較泛型List算法和FCL的非泛型ArrayList算法的性能,。同時(shí)使用值類型和引用類型的對(duì)象來(lái)測(cè)試這兩個(gè)算法的性能:

static void Main(string[] args)
{
ValueTypePerfTest();
ReferenceTypePerfTest();
Console.ReadLine();
}
public static void ValueTypePerfTest()
{
const Int32 count = 10000000;
using (new OperationTimer("List<Int32>"))
{
List<Int32> l = new List<Int32>(count);
for (Int32 i = 0; i < count; i++)
{
l.Add(i);
Int32 x = l[i];
}
l = null;
}
using (new OperationTimer("ArrayList of Int32"))
{
ArrayList a = new ArrayList();
for (Int32 i = 0; i < count; i++)
{
a.Add(i);
Int32 x = (Int32)a[i];
}
a = null;
}
}
public static void ReferenceTypePerfTest()
{
const Int32 count = 10000000;
using (new OperationTimer("List<string>"))
{
List<string> l = new List<string>();
for (Int32 i = 0; i < count; i++)
{
l.Add("X");
string x = l[i];
}
l = null;
}
using (new OperationTimer("ArrayList of string"))
{
ArrayList a = new ArrayList();
for (Int32 i = 0; i < count; i++)
{
a.Add("X");
string x = (String)a[i];
}
a = null;
}
Console.ReadLine();
}
}
internal sealed class OperationTimer : IDisposable
{
private Int64 m_startTime;
private string m_text;
private Int32 m_collectionount;
public OperationTimer(string text)
{
PrepareForOperation();
m_text = text;
m_collectionount = GC.CollectionCount(0);
m_startTime = Stopwatch.GetTimestamp();
}
public void Dispose()
{
Console.WriteLine("{0,6:###.00} seconds (GCs={1,3})  {2}",
(Stopwatch.GetTimestamp()-m_startTime)/(Double)Stopwatch.Frequency,
GC.CollectionCount(0)-m_collectionount,m_text);
}
private static void PrepareForOperation()
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}


輸出結(jié)果如下:

list

    這個(gè)輸出結(jié)果證明:將泛型list算法應(yīng)用于Int32類型,,速度比將非泛型ArrayList算法應(yīng)用于Int32快的多,用ArrayList來(lái)操作值類型(Int32),,會(huì)造成大量裝箱操作,,最終要進(jìn)行44次垃圾回收次數(shù)(GC)。相應(yīng)地,,List算法需要的垃圾回收次數(shù)是0,。使用引用類型來(lái)測(cè)試,差別就沒(méi)有那么明顯了,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多