繁体   English   中英

概念:让 Java 程序运行的外生因素的最快方法是什么?

[英]Conceptual: what is the fastest way to get exogenous factors for a Java program to run?

我有一个模拟市场的 Java 程序。 它有两个不同的外生二进制变量决定了它的 state:连续/固定和长/短。 例如,连续多头 state 中的市场与固定多头 state 等中的市场行为不同。由于我希望程序在生产中收到大量请求,所以我想制作获取的过程这些外生因素非常快速且资源轻(我认为这两个在性能方面意味着相同的事情,但如果不是这样,我想强调前者)。

以下是我考虑过的两种实现方式:

  1. 创建一个表,其中包含与上述变量对应的两列(以及启动这些列的默认值的单行)。 在我运行市场的程序中运行我的 go() 方法之前,我会运行一个 getState() 方法,它可能看起来像这个伪代码(使用 JDBC 连接到 mySQL):

     try (Connection connection = connect(); Statement stmt = connection.createStatement()) { ResultSet rs = stmt.executeQuery(GET_STATE); while(rs.next()) { String contOrFixed = rs.getString("ContOrFixed"); String longOrShort = rs.getString("LongOrShort"); } [set market variables accordingly] }

这是假设我有一个单独的 class 和一个不需要每次都运行的 setState() 方法。

  1. 另一种实现可能是不同的运行方法,它通过变量设置 state,然后调用持有我的市场的 class 的主要方法。 它可能看起来像这样:

     public static void main(String[] args) { args = new String[2]; args[0] = contOrFixed; args[1] = longOrShort; myMarket.main(args); }

这是假设我在 myMarket class 中有一个主要方法,并且我有一个单独的 class 可以设置 ContinuousOrFixed 和 longOrShort,不必每次都运行。

现在,要实现我的目标,即每次运行都获得市场上的 state,我的目标是什么? 它是上述两者之一还是不同的东西? 当然,这是一项小任务,所以我假设运行 100 次所花费的时间可以忽略不计,但对于更大的数量级则不然。

public static void main....是你真正的问题。 无论您在其中做什么都无关紧要,因为 Java 启动缓慢。 解析命令行 arguments 比连接数据库快得多,但后者通常仍然比启动 JVM 快得多。

Java 本身非常快,但是您需要一个正在运行的进程并发送请求告诉它该做什么。 您可以使用 sockets 或 HTTP(S) 或更复杂的东西。 我会为 HTTPS 选择 go,因为这是最常见的方式。


我可能误解了你的问题,但请考虑澄清它......

暂无
暂无

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

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