我有兴趣学习JNI。 我已经开发了一个简单的代码来测试java代码和c ++代码中的性能。
这是我尝试过的: 我的Java代码:
public class TestJni
{
static
{
System.load("../../cpp/dist/testlib.so");
}
public static void main(String[] args)
{
int size = 200;
//////////C++//////////
long startTime = System.nanoTime();
new TestJni().doJob(size);
long endTime = System.nanoTime();
long duration = (endTime - startTime);
System.out.println("C++ Run time: "+(duration/1000000)+" milli-second\n");
////////////Java///////
startTime = System.nanoTime();
javaJob(size);
endTime = System.nanoTime();
duration = (endTime - startTime);
System.out.println("Java Run time: "+(duration/1000000)+" milli-second\n");
}
private native void doJob(int size);
private static void javaJob(int size)
{
int f;
for(int i = 0 ; i<size ; i++)
{
for (int j = 0; j < size; j++)
{
for (int k = 0; k < size; k++)
{
for (int z = 0; z < size; z++)
{
f=i+j+k+z;
}
}//for k
}//for j
}//for i
}
}
这是我的C ++代码:
JNIEXPORT void JNICALL Java_test_1jni_TestJni_doJob (JNIEnv * env, jobject obj , jint jsize)
{
int f;
int size = jsize;
for(int i = 0 ; i<size ; i++)
{
for (int j = 0; j < size; j++)
{
for (int k = 0; k < size; k++)
{
for (int z = 0; z < size; z++)
{
f=i+j+k+z;
}
}//for k
}//for j
}//for i
}
我希望C ++代码更快或两个代码同时运行。 但输出完全不同:
C ++运行时间:3566毫秒
Java运行时间:6毫秒
为什么java代码比c ++代码快500多倍? 我真的希望它们能够同时运行,或者c ++代码运行得更快......