【问题标题】:What is the latency in RxCpp?RxCpp 的延迟是多少?
【发布时间】:2022-01-25 07:17:22
【问题描述】:

我正在寻找有关使用RxCpp 库处理事件流的本机延迟的信息,即处理一条简单消息的库开销是多少(例如,指向对象的指针)?从某个来源发布一个事件到一个琐碎(什么都不做)的观察者完成处理需要多长时间?

我进行了很多网络搜索,但似乎无法找到任何基准。我不需要确切的数字,只要规模就足够了:是毫秒、微秒还是数百纳秒?

【问题讨论】:

  • 小心你在互联网上找到的网络基准,它们经常被编译错误或有错误,尤其是在微基准测试中,这里就是这种情况。自己做吧。
  • 对延迟进行一些规模估计将有助于我了解是否值得研究图书馆文档,或者我必须为我的项目寻找其他东西。
  • 你首先想做什么?
  • 流处理库?有很多!从我的脑海中:Tigon、LightSaber、Kafka、LogDevice、Aeron、Concord。对于 Java,将其乘以 10。在此处查看列表:github.com/manuzhang/awesome-streaming
  • 对您实际根据经验对您寻求的延迟进行基准测试会很有用,然后发布测量的延迟(最好是对测量内容/方式的简要描述)作为您自己问题的答案。这是一个很好的有效问题,其答案需要针对所有语言的所有响应式框架公开,而不仅仅是 C++ 的 RxCpp(但我们需要从某个地方开始,不是吗?)。

标签: c++ latency low-latency rxcpp


【解决方案1】:

rxcpp 主要是语法糖,但不仅如此。它是一个通过应用于数据的一系列操作来构建流的框架。作为 rxcpp 的贡献者,我可以说,在最近几次提交之后,性能应该会好一些(由于消除了对原始对象的大量复制/移动调用)。无论如何,在内部它只是将对象传递给函数,将获取的值发送到下一个块等等。

不管怎样,内部逻辑对于大多数操作符(比如 map 或 filter)来说都是非常简单的,它只不过是通过通用引用获取值,传递给用户定义的 lambda 并接下来传递值。所以,你只会通过传递值等来承担开销。

如果您对每个运算符的特定数量的副本感兴趣,您可以检查 rxcpp 中的单元测试,我已经为每个运算符添加了测试。

【讨论】:

  • 改写我原来的问题:如果您在 RxCpp 中有任何单元测试,请告诉我们,它可以用来估算所有 "syntax sugar"的计算成本> 以及图书馆中所有漂亮的界面?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
相关资源
最近更新 更多