Хочется для enum реализовать простенькие функции для битовых операций, но это работает в десятки раз медленнее, чем нужно.
Нету никаких способов чтобы это ускорить?
Жаль, что в C# даже нету простеньких препроцессорных текстовых макросов.
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
public static bool HasAnyFlag<T>(T en1, T en2) where T : IConvertible
{
return (en1.ToInt32(null) & en2.ToInt32(null)) != 0;
}
//...
HasAnyFlag((int)f, (int)(SomeFlags.F1 | SomeFlags.F2)); //Быстро.
HasAnyFlag(f, SomeFlags.F1 | SomeFlags.F2); //В десятки раз медленнее!