对象创建与一个实例以及每次注入依赖项的性能 - JAVA

问题描述 投票:0回答:1

我正在用 Java 创建一个实时交易机器人,我遇到了一些需要帮助的事情。 每隔 10 秒左右,我就会收到股票代码的更新信息,并且我必须通过分析阶段运行这些数据,以确定是否触发策略进入或退出。我担心的是,每个报价可能有数百种不同的策略需要分析,因此我不确定是否为每个策略创建和存储一个实例更好,或者仅为该特定报价创建一个对象。

策略是股票代码、区间和指标配置的具体配置。因此,即使策略 1 的逻辑与策略 2 的逻辑相同,我也需要不同的信息来分析它们。这就是为什么我可以获得数百种策略。

我想看看哪种设计更好:

创建和销毁每个股票代码的策略对象 我有一个策略对象,我可以创建并注入所有其他依赖项,分析股票信息,然后使用垃圾收集器销毁它。这意味着我不会在内存中存储数百个实例,而只会存储 X 个实例(如果是多线程)。

创建基础对象并注入依赖项 我可以创建一个基础对象并根据策略类型将其存储在映射中,因此我只有(比方说)15 个实例,而不是数百个实例。然后注入我正在该特定分析的当前策略的相关信息时间。我认为这就像一个对象池,我在其中存储基本实例,可以通过在功能问题中注入我需要的内容来分析数据。

为每个策略创建一个对象并存储它 为此,我将为每个策略运行创建一个实例,并将其存储在地图中。这意味着我可能会在内存中存储数百个对象,但至少我不会每次都经历创建新对象的性能成本。

我不确定什么是最好的性能,我想知道在JAVA中反复创建和销毁对象有什么缺点。我认为这会影响性能。

java performance design-patterns
1个回答
0
投票

这听起来很像线性代数问题。

在一个 2x2 矩阵中,一侧是所有股票,另一侧是每种策略。他们相遇的地方就是股价将如何影响买入/卖出决策。

然后您可以将其乘以一维股票价格矩阵,结果会根据每种策略给出答案。

您可能想在 Github 上查找 Java 矩阵包。 NASA 当年有一个很好的经历。

© www.soinside.com 2019 - 2024. All rights reserved.