c# - 响应式扩展源代码中的 NO_PERF 标志在做什么

标签 c# .net system.reactive compiler-flags

在 ReactiveExtensions 源代码中有大量代码在不同的实现之间切换,例如

https://github.com/Reactive-Extensions/Rx.NET/blob/master/Rx.NET/Source/System.Reactive.Linq/Reactive/Linq/QueryLanguage.StandardSequenceOperators.cs

和一个片段

#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/

相关文章:

.net - Rx 滑动窗口 - 适当的清理?

c# - 使用 RX 查询,如何在每秒 3 秒的窗口内获取哪些记录具有相同状态?

json - RxSwift 可观察到的错误停止链 - 使用 Rx 的 Web 服务,如何恢复?

c# - Google .NET API - 除了 FileDataStore 之外还有其他数据存储吗?

c# - Linq to SQL 记录未更新

C# 套接字 : Do I really need so many separate threads

c# - 使用 AutoPoco 生成依赖于另一个值的值

.net - VB.Net 构造函数顺序很重要?

c# - 错误 : The Out Parameter must be assigned before control leaves the current method

c# - 如果名称为大写,Newtonsoft JsonConvert.SerializeObject 将忽略 JsonProperty