我做了如下↓的测试
1)创建客户枚举(从每周的复制)
[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,
}
Run Code Online (Sandbox Code Playgroud)
2)创建两种测试方法......
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());
}
Run Code Online (Sandbox Code Playgroud)
3)主要方法
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();
}
Run Code Online (Sandbox Code Playgroud)
4)结果:
Tester : 3164ms
DayOfWeek : 7032ms
Run Code Online (Sandbox Code Playgroud)
我真的不知道为什么系统类型枚举慢于客户枚举类型....有人能告诉我为什么?谢谢...
更新编辑: 将[ComVisible(true)]添加到枚举.
[ComVisible(true)]
[Serializable]
public enum Tester
{
Sunday = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
}
Run Code Online (Sandbox Code Playgroud)
结果 :
Tester : 5018ms
DayOfWeek : 7032ms
Run Code Online (Sandbox Code Playgroud)
系统枚举类型仍然比客户枚举类型慢...
枚举可以用 [ComVisible(true)] 或 [Flags] 装饰,并且每次它都会更改测试结果。
\n\n[Serializable]\n//[Flags]\n[ComVisible(true)]\npublic enum Tester\n{ \n // \xe6\xa6\x82\xe8\xa6\x81:\n // Indicates Sunday.\n Sunday = 0, \nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |