繁体   English   中英

使用时序数据评估表达树的设计建议

[英]Design suggestion for expression tree evaluation with time-series data

我有一个使用财务时间序列数据的(C#)遗传程序,目前正在运行,但是我想重新设计该体系结构,以使其更强大。 我的主要目标是:

  • 将时间序列数据顺序呈现给表达式树。
  • 允许表达式树在需要时访问先前的数据行。
  • 在评估表达式树的同时优化数据访问的性能。
  • 保持通用接口,以便可以使用各种类型的数据。

这是我考虑过的可能方法:

  1. 我可以通过将数据行传递到根节点并让每个子节点使用相同的数据行来评估表达式树。
  2. 我可以通过传入数据行索引并让每个节点从共享的DataSet获取数据行来评估表达式树(当前,我正在传递行索引并进入多个同步数组以获取数据)。
  3. 混合的:所有表达式树都可以访问一个不变的数据集,并且通过传递数据行来评估每个表达式树。

第一种方法的好处是将数据行传递到表达式树中,并且不再对数据集进行任何查询(这将提高多线程环境中的性能)。 缺点是表达式树无法访问其余数据(以防某些功能需要使用以前的数据行进行计算)。

第二种方法的好处是,表达式树可以访问最新数据行之前的任何数据,但是除非我指定该行是什么,否则我将不得不遍历各行并找出哪一个是最后一行。

混合的好处是,它通常应该表现得更好,并且仍然提供对早期数据的访问。 它支持数据的两个基本“视图”:最新行和先前行。

你们是否知道任何设计模式,或者您有什么技巧可以帮助我构建这种类型的系统? 我应该使用DataSet来保存和呈现数据,还是在维护简单接口的同时,有更有效的方式来呈现数据行?

仅供参考:我所有的代码都是用C#编写的。

您所说的主要是关于操作的,这不应该是面向对象设计的第一个倡议。 我建议您创建映射到数据表每一行的RowObject,并创建另一个类RowObjectManager,其中包含RowObject和相关操作(如调用算法)的集合。 这非常类似于Facade模式,您可以将算法封装在另一个类中,并使用依赖项注入方式调用算法,该方式可以与RowObjectManager类分离。

然后,您应该将OBJECT而不是对象的属性(如index)传递给算法,然后算法可以将结果返回给调用方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM