我使用JNI从Java调用C代码作为本机代码。 所以,我创建了一个DLL,我从Java代码加载它。 这很奇怪但是如果我运行与.exe相同的C代码它比用作本机代码的相同代码更快。 为什么?? 我使用Windows 7 64位,jdk 32位,Cygwin,32位的dll 构建dll的调试和发布模式之间有什么区别吗?
答案 0 :(得分:0)
调试和发布模式之间肯定存在差异。在调试模式下,编译器将避免积极的优化,因为它们往往会使调试更加困难。在发布模式下它不会。因此,如果您的.exe是在发布模式下构建的,并且您的DLL处于调试模式,那么这可能会产生您描述的效果。 (无论它实际上是差异的原因,这里没有足够的信息说。你能确保两者都以相同的方式构建并报告速度差是否消失?)