我正在开发一个交易应用程序,它涉及订阅许多符号的引号(ticks)并在传入的ticks上运行算法。我有一个策略基类和Algo类,它继承了它。
public abstract class Strategy
{
...
public int ID {get; set;}
}
public class Algo : Strategy
{
public void OnTick(Tick t) { // algo here }
}
我为每个交易的符号创建一个Algo Class实例,并为所有创建的实例保留一个List,每个实例都有一个唯一的ID
Dictionary<Algo, string> dicOfStrategies = new ...;
Foreach(Symbol sym in listOfSymbols) //many symbols
{
Algo a = new Algo();
dicOfStrategies.Add(a, "IBM");
}
在传入的勾号上:
if(Tick.Symbol == dicOfStrategies[Symbol]
{
dicOfStrategies[algo].OnTick()
}
我的问题是,使用相同的符号将传入的刻度线路由到正确的Algo实例的最有效方法是什么?
我是否为每个传入的刻度搜索dicOfStrategis并找到Algo实例匹配并调用其方法? ...将有1000个来自流的滴答声需要快速处理..有更好的方法吗?谢谢你的帮助。
答案 0 :(得分:0)
回答你的问题:
&#34;使用相同的符号将传入的刻度线路由到正确的Algo实例的最有效方法是什么&#34;
Dictionary<string, Strategy>
字典|最适合高性能查找。
C#/.NET Fundamentals: Choosing the Right Collection Class
具有最佳性能的集合是Dictionary&lt;&gt;以及SortedList&lt;&gt;。
中占地面积最小的集合