2011-07-19 45 views
6

Tôi đã làm một thử nghiệm như dưới đây ↓Có sự khác biệt giữa khách hàng Loại hình Enum Loại và hệ thống Enum

1) Tạo một enum khách hàng (sao chép từ DAYOFWEEK)

[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) Tạo hai thử nghiệm phương pháp ...

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) phương thức Main

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) Kết quả:

Tester : 3164ms 
DayOfWeek : 7032ms 

Tôi thật sự không biết tại sao các loại hệ thống enum là chậm hơn so với các loại enum khách hàng .... Ai có thể cho tôi biết tại sao? Cảm ơn bạn ...

CẬP NHẬT CHỈNH SỬA: Thêm [ComVisible (true)] vào enum.

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


    Monday = 1, 


    Tuesday = 2, 


    Wednesday = 3, 


    Thursday = 4, 


    Friday = 5, 


    Saturday = 6, 
} 

Kết quả:

Tester : 5018ms 
DayOfWeek : 7032ms 

Các hệ thống kiểu enum vẫn chậm hơn so với các loại enum khách hàng ...

+0

Chỉ cần chụp trong bóng tối, nhưng điều đó enum (DayOfWeek) có thể có xử lý Văn hóa đặc biệt. – leppie

Trả lời

1

Enum có thể được trang trí với [ComVisible (true)] hoặc [Flags] và mỗi lần thay đổi kết quả thử nghiệm của bạn.

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

Bạn nên thêm thuộc tính [ComVisible(true)] nếu bạn muốn so sánh táo để táo.

Các vấn đề liên quan