Hice una prueba como la de abajo ↓¿Hay alguna diferencia entre el Cliente tipo de enumeración Tipo y sistema de enumeración
1) Crear una enumeración cliente (copiar de la 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) Crear dos pruebas método ...
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) método 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) El resultado:
Tester : 3164ms
DayOfWeek : 7032ms
Realmente no sé por qué el tipo de sistema de enumeración es más lento que el tipo de enumeración del cliente .... Podría alguien decirme por qué? Gracias ... EDITAR
ACTUALIZACIÓN: Añadir la [ComVisible (true)] para la enumeración.
[ComVisible(true)]
[Serializable]
public enum Tester
{
Sunday = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
}
El resultado:
Tester : 5018ms
DayOfWeek : 7032ms
El sistema de tipo de enumeración aún más lento que el tipo de enumeración del cliente ...
Solo un disparo en la oscuridad, pero ese enum (DayOfWeek) puede tener un manejo de Culture especial. – leppie