Enum optimizations

This commit is contained in:
Chris Cameron
2018-03-09 13:48:54 -05:00
parent ada309a2af
commit cffe850bd7
2 changed files with 12 additions and 6 deletions

View File

@@ -2,7 +2,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using ICD.Common.Properties; using ICD.Common.Properties;
using ICD.Common.Utils.Collections;
using ICD.Common.Utils.Extensions; using ICD.Common.Utils.Extensions;
#if SIMPLSHARP #if SIMPLSHARP
using System.Globalization; using System.Globalization;
@@ -15,8 +14,15 @@ namespace ICD.Common.Utils
{ {
public static class EnumUtils public static class EnumUtils
{ {
private static readonly Dictionary<Type, IcdHashSet<object>> s_EnumValuesCache = private static readonly Dictionary<Type, object[]> s_EnumValuesCache;
new Dictionary<Type, IcdHashSet<object>>();
/// <summary>
/// Static constructor.
/// </summary>
static EnumUtils()
{
s_EnumValuesCache = new Dictionary<Type, object[]>();
}
/// <summary> /// <summary>
/// Returns true if the given type is an enum. /// Returns true if the given type is an enum.
@@ -119,7 +125,7 @@ namespace ICD.Common.Utils
// Reflection is slow and this method is called a lot, so we cache the results. // Reflection is slow and this method is called a lot, so we cache the results.
if (!s_EnumValuesCache.ContainsKey(type)) if (!s_EnumValuesCache.ContainsKey(type))
s_EnumValuesCache[type] = GetValuesUncached(type).ToIcdHashSet(); s_EnumValuesCache[type] = GetValuesUncached(type).ToArray();
return s_EnumValuesCache[type]; return s_EnumValuesCache[type];
} }

View File

@@ -49,8 +49,8 @@ namespace ICD.Common.Utils.Extensions
throw new ArgumentException(message); throw new ArgumentException(message);
} }
ulong num = Convert.ToUInt64(value); int num = (int)(object)value;
return (Convert.ToUInt64(extends) & num) == num; return ((int)(object)extends & num) == num;
} }
} }
} }