2011-07-19 20 views
6

yaptım ↓Müşteri Enum tipi ve Sistem Numaralandırma Türü arasında herhangi bir fark var mı

1) Bir müşteri enum (dayOfWeek kopyalamak)

[Serializable] 
public enum Tester 
{ 
    // 概要: 
    //  Indicates Sunday. 
    Sunday = 0, 
    // 
    // 概要: 
    //  Indicates Monday. 
    Monday = 1, 
    // 
    // 概要: 
    //  Indicates Tuesday. 
    Tuesday = 2, 
    // 
    // 概要: 
    //  Indicates Wednesday. 
    Wednesday = 3, 
    // 
    // 概要: 
    //  Indicates Thursday. 
    Thursday = 4, 
    // 
    // 概要: 
    //  Indicates Friday. 
    Friday = 5, 
    // 
    // 概要: 
    //  Indicates Saturday. 
    Saturday = 6, 
} 

2) iki testi oluşturun aşağıdaki gibi bir deney yöntemi ...

static void TestEnumToString() 
    { 
     var t = Tester.Sunday; 
     Enumerable.Range(0, 1000000).ToList().ForEach(i => t.ToString()); 
    } 

    static void DayOfWeekEnumToString() 
    { 
     var t = DayOfWeek.Sunday; 
     Enumerable.Range(0, 1000000).ToList().ForEach(i => t.ToString()); 
    } 

3) Ana yöntem

static void Main() 
    { 
     Stopwatch sw = new Stopwatch(); 
     sw.Start(); 
     TestEnumToString(); 
     sw.Stop(); 
     Console.WriteLine("Tester:" + sw.ElapsedMilliseconds); 


     sw = new Stopwatch(); 
     sw.Start(); 
     DayOfWeekEnumToString(); 
     sw.Stop(); 
     Console.WriteLine("DayOfWeek:" + sw.ElapsedMilliseconds); 

     Console.ReadKey(); 
    } 

4) Sonuç:

Tester : 3164ms 
DayOfWeek : 7032ms 

sistemi türü enum müşteri enum türü daha yavaştır Gerçekten neden bilmiyorum .... kimse bana söz neden olabilir mi? ...

GÜNCELLEME EDIT teşekkür ederiz: enum [ComVisible (true)] ekleyin.

[ComVisible(true)] 
[Serializable] 
public enum Tester 
{ 
    Sunday = 0, 


    Monday = 1, 


    Tuesday = 2, 


    Wednesday = 3, 


    Thursday = 4, 


    Friday = 5, 


    Saturday = 6, 
} 

Sonuç: elma ile elma karşılaştırmak istiyorsanız

Tester : 5018ms 
DayOfWeek : 7032ms 

müşteri enum türü daha hala yavaş sistem enum türü ...

+0

Sadece karanlıktaki bir çekim, ancak bu enum (DayOfWeek) özel bir Kültür işlemine sahip olabilir. – leppie

cevap

1

Enum, [ComVisible (true)] veya [Flags] ile süslenebilir ve her seferinde testinizin sonucunu değiştirir.

[Serializable] 
//[Flags] 
[ComVisible(true)] 
public enum Tester 
{  
    // 概要: 
    //  Indicates Sunday. 
    Sunday = 0,  
1

Sen [ComVisible(true)] özelliği eklemeniz gerekir.

İlgili konular