LINQ AsParallel
возвращает ParallelQuery
. Интересно, можно ли изменить это поведение, чтобы я мог сравнить выполнение оператора LINQ с параллелизмом и без него без фактического изменения кода ? Это поведение должно быть похоже на Debug.Assert
- когда директива препроцессора DEBUG
не установлена, она оптимизируется. Поэтому я хотел бы, чтобы AsParallel
возвращал тот же тип, не преобразовывая его в ParallelQuery
.
Полагаю, я могу объявить свой собственный метод расширения (потому что я не могу переопределить AsParallel
) и проанализировать в нем эту директиву препроцессора:
public static class MyExtensions
{
#if TURN_OFF_LINQ_PARALLELISM
public static IEnumerable<T> AsControllableParallel<T>(this IEnumerable<T> enumerable)
{
return enumerable;
}
#else
public static ParallelQuery<T> AsControllableParallel<T>(this IEnumerable<T> enumerable)
{
return enumerable.AsParallel();
}
#endif
}
Интересно, есть ли другой способ. Я слишком многого прошу?