Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dll C代码作为java本机代码使用非常慢_Dll_Performance_Java Native Interface_Native Code - Fatal编程技术网

Dll C代码作为java本机代码使用非常慢

Dll C代码作为java本机代码使用非常慢,dll,performance,java-native-interface,native-code,Dll,Performance,Java Native Interface,Native Code,我使用JNI从Java调用C代码作为本机代码。 因此,我创建了一个dll,并从Java代码加载它。 这很奇怪,但是如果我运行与.exe相同的C代码,它比作为本机代码使用的代码要快。 为什么? 我使用Windows7 64位,jdk 32位,Cygwin,一个32位的dll 构建dll的调试模式和发布模式之间有什么区别吗?调试模式和发布模式之间肯定有区别。在调试模式下,编译器将避免激进的优化,因为它们会使调试更加困难。在释放模式下,它不会。因此,如果您的.exe是在发布模式下构建的,而DLL是在调

我使用JNI从Java调用C代码作为本机代码。 因此,我创建了一个dll,并从Java代码加载它。 这很奇怪,但是如果我运行与.exe相同的C代码,它比作为本机代码使用的代码要快。 为什么? 我使用Windows7 64位,jdk 32位,Cygwin,一个32位的dll
构建dll的调试模式和发布模式之间有什么区别吗?

调试模式和发布模式之间肯定有区别。在调试模式下,编译器将避免激进的优化,因为它们会使调试更加困难。在释放模式下,它不会。因此,如果您的.exe是在发布模式下构建的,而DLL是在调试模式下构建的,那么可能会产生您描述的效果。无论这是否真的是造成差异的原因,这里没有足够的信息来说明。你能确保两者都是以相同的方式构建的,并报告速度差是否消失了吗