【问题标题】:Better to filter a stream of data at its start or end?在开始或结束时更好地过滤数据流?
【发布时间】:2010-12-10 04:05:53
【问题描述】:

我正在处理一个需要处理大量(数 GB)逗号分隔值 (CSV) 文件的项目。

我的基本做法如下:

  1. 创建一个知道如何 阅读所有相关文件
  2. 用这个对象注册一组对数据感兴趣的监听器
  3. 读取每个文件的每一行,调度从数据行创建的对象 给每一位听众
  4. 每个 Listener 决定这条数据是否有用/相关

我想知道在源端进行过滤是否会更好,例如每个侦听器都有一个关联的 Predicate 对象,该对象确定是否应将给定的数据分派给侦听器,在这种情况下,流程看起来更像

  1. 创建一个知道如何 阅读所有相关文件
  2. 用这个对象注册一组对
  3. 读取每个文件的每一行,调度从数据行创建的对象 如果其关联的 Predicate 为数据返回 true,则发送给每个侦听器

最终效果是一样的,只是过滤发生在哪里的问题。

(同样,我拥有一次处理一个条目的这种“数据流”的唯一原因是因为我正在处理千兆字节的 CSV 文件,并且我无法创建集合、过滤它,并且然后处理它 - 我需要随时过滤)

【问题讨论】:

    标签: csv filtering data-stream


    【解决方案1】:

    除非调用侦听器的成本很大(Remoting、WCF、...),否则我会保留一个非常简单的界面,让侦听器决定如何处理该行。

    【讨论】:

    • 接受 - 让事情变得更简单。
    猜你喜欢
    • 2014-06-27
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 2019-11-10
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多