在 ReactiveExtensions 源代码中有大量代码在不同的实现之间切换,例如
和一个片段
#if !NO_PERF
return new Distinct<TSource, TSource>(source, x => x, EqualityComparer<TSource>.Default);
#else
return Distinct_(source, x => x, EqualityComparer<TSource>.Default);
#endif
这个标志 NO_PERF
的目的是什么,使用它和不使用它编译的库在行为上有什么区别。
最佳答案
作为 Rx 团队的一员,我可以回答这个问题:
答案可以追溯到我们从 Rx 1.1 到 Rx 2.0 的变化。我们希望能够保留使用 AnonymouseObservable 的旧样式以防万一,但在大多数情况下,您需要性能增强的版本。
两者在性能上存在很大差异,在某些情况下更急于处理。您可以找到有关我们更改的更多信息 here .
关于c# - 响应式扩展源代码中的 NO_PERF 标志在做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22680417/