通过Java shell执行比控制台更长的时间?

时间:2010-12-28 11:29:56

标签: java python shellexecute

我在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收到确认。
  6. 后来Java和Python之间有一系列通信,但只需几秒钟。

    更新(29.12.2010)

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

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

1 个答案:

答案 0 :(得分:2)

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