我正在考虑使用C为我的应用程序执行一些后端处理,至少对于学习体验而言,如果没有别的话。
通常我要做的是将C程序编写为独立的shell命令,然后使用Process.exec
运行它并获得结果。
但想到了开销的想法。每次需要调用其中一个C程序时,它会产生多少开销来调用shell进程?使用JNI提高性能是否更好?
应用程序将托管在服务器上,并且必须处理大量的同时请求,因此我的直觉是JNI是更有效的方式。但是我对这个领域还不够了解,所以关于它如何影响性能的一些指导将会有所帮助。
答案 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玩得开心!