6

我有一个 Python 脚本,可以进行一些计算。当我在控制台中运行这个脚本时,大约需要 7 分钟才能完成,但是当我运行它时,我认为 Java shell 需要三倍的时间。我使用以下代码在 Java 中执行脚本:

this.p = Runtime.getRuntime().exec("script.py --batch", envp);

this.input = new BufferedReader(new InputStreamReader(p.getInputStream()));
this.output = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
this.error = new BufferedReader(new InputStreamReader(p.getErrorStream()));

你有什么建议为什么 Python 脚本在 Java 中的运行时间是在控制台中的三倍?

更新 (29.12.2010)

计算如下:

  1. Java 向 Python 发送数据。
  2. Python 读取数据。
  3. Python 生成决策树 --- 这是一个很长的操作。
  4. Python 发送确认树已准备就绪。
  5. Java 收到确认。

后来在 Java 和 Python 之间进行了一系列通信,但只需要几秒钟。

更新 (29.12.2010)

感谢您的所有意见和建议。花了一个工作日才发现我的假设是错误的。我使用的代码有一个“错误”,实际上在控制台和 shell 中执行了不同的计算。当我修复它时,计算时间是相同的。

摘要:在控制台和 Java shell 中运行的脚本的计算时间几乎相同。用于初始化 Java VM 和 IO 通信的额外时间是微不足道的。

4

1 回答 1

2

尝试在没有 BufferedReaders 和 BufferedWriters 的情况下使用相同的代码,以防缓冲引入延迟。我不确定缓冲写入器等待刷新的时间,但至少,删除它们将有助于简化您的问题。

于 2010-12-28T16:30:15.860 回答