簡體   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