使用Java Runtime和Process类来执行C代码与使用本机接口

时间:2017-10-04 05:01:56

标签: java c java-native-interface

我正在考虑使用C为我的应用程序执行一些后端处理,至少对于学习体验而言,如果没有别的话。

通常我要做的是将C程序编写为独立的shell命令,然后使用Process.exec运行它并获得结果。

但想到了开销的想法。每次需要调用其中一个C程序时,它会产生多少开销来调用shell进程?使用JNI提高性能是否更好?

应用程序将托管在服务器上,并且必须处理大量的同时请求,因此我的直觉是JNI是更有效的方式。但是我对这个领域还不够了解,所以关于它如何影响性能的一些指导将会有所帮助。

1 个答案:

答案 0 :(得分:0)

我建议从这里开始:

http://jnicookbook.owsiak.org/recipe-No-001/

您将感受到如何处理JNI。我从简单的事情开始,然后,我转向更复杂的主题 - 在与JNI打交道时,你可能会遇到大部分问题。

我建议从简单的Hello World开始 - 只是为了确保你有工作环境。

而且,在性能方面。我建议按照测试。尝试将“Hello world”作为独立进程运行,然后通过JNI运行并比较结果:)

最优选地,运行它更长时间;)

只是为了给你肮脏,丑陋,大胆,估计。让我们说你要打印“Hello world!”使用JNI与Process builder - 1000次。

JNI: 4ms
Process: 3275ms

<强>更新

如果您想进行一些测试,请执行以下操作

git clone https://github.com/mkowsiak/jnicookbook.git
cd jnicookbook/recipeNo033
make
make test

与JNI玩得开心!