Java:外部应用程序的大型启动开销 - ProcessBuilder,NuProcess,Zt-Exec

时间:2017-01-27 09:54:22

标签: java performance process

我从Java启动命令行应用程序。问题是从命令行启动应用程序比从Java启动应用程序要少得多。我会阅读类似于我的各种StackOverflow问题(例如,this oneother)。他们抱怨Java固有的开销,并建议各种方法来减少启动开销。不幸的是,他们没有报告他们是否真的有所改善。

我尝试了几种方法但没有成功。我想听听我做错了什么。我不会为ProcessBuilder提供慢速代码。

NuProcess library

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.bianca.cityworld2">
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".activities.MainActivity">

        </activity>
        <activity android:name=".activities.AddEditActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Zt-Exec library(在内部使用ProcessBuilder):

    NuProcessBuilder pb = new NuProcessBuilder(params);
    pb.setCwd(Paths.get(inputFilePath));

    ProcessHandler handler = new ProcessHandler();
    pb.setProcessListener(handler);

    NuProcess process = pb.start();
    process.waitFor(1, TimeUnit.MINUTES); 

我没有尝试this native lib,因为我看到的问题没有改善。

我只能达到2.476秒而不是从命令行运行869毫秒。这对我的应用非常关键。这些数字适用于Windows 10.我已经在Linux Ubuntu上进行了测试并得到了大约。相同的比例。

有什么建议吗?

0 个答案:

没有答案