【问题标题】:How to handle 100 Mbps input stream when my program can process data only at 1 Mbps rate当我的程序只能以 1 Mbps 速率处理数据时如何处理 100 Mbps 输入流
【发布时间】:2012-08-06 13:35:24
【问题描述】:

我正在开展一个项目,我们可以在其中输入 100 Mbps 的数据流。

我的程序可以在一夜之间用于捕获这些数据,因此会生成巨大的数据文件。我解释这些数据的程序逻辑很复杂,每秒只能处理 1 Mb 数据。

我们还会在处理后将字节转储到某个日志文件中。我们不想丢失任何传入的数据,同时希望我的程序能够实时运行。所以;我们正在维护一个类似于缓存的循环缓冲区。

目前唯一避免传入数据丢失的方法是增加此缓冲区的大小。

请建议更好的方法,以及我可以尝试的替代缓存方式是什么?

【问题讨论】:

  • 我想你的意思是 100 Mbps(100 兆比特每秒)而不是 100 兆比特每秒(100 兆比特每秒)?
  • @Paul 是的,它是每秒 100 兆比特。我已经更正了这个问题。

标签: c++ performance caching


【解决方案1】:

将输入流式传输到文件。真的,别无选择。它进来的速度比你处理它的速度要快。

您可以每秒创建一个文件的输入数据。这样您就可以在磁盘上流式传输新文件时直接开始处理旧文件。

【讨论】:

  • @tuğrulbüyükışık,这是有道理的。由于数据量大,OP 无论如何都需要流式传输到磁盘。
  • 我认为文件会降低性能。所以;我想使用一些缓存来处理它。我知道如果我们始终以相同的速度获取数据,那么传入的数据将会丢失。但有可能传入数据的速度不会始终保持如此高的速度。
  • 相变内存释放的时候我觉得应该没问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 2017-01-07
相关资源
最近更新 更多