2011-03-21 73 views
0

我使用JNI從Java調用Java代碼作爲本機代碼。 所以,我創建了一個dll,並從Java代碼中加載它。 這很奇怪,但是如果我運行與.exe相同的C代碼它比用於本機代碼的相同代碼更快。 爲什麼? 我使用Windows 7 64位,jdk 32位,Cygwin,32位的DLL 建立一個DLL的調試和發佈模式之間有任何區別嗎?C代碼使用它作爲java本地代碼非常緩慢

回答

0

調試和發佈模式之間肯定存在差異。在調試模式下,編譯器將避免激進的優化,因爲它們往往會加大調試難度。在發佈模式下它不會。因此,如果您的.exe是以發佈模式構建的,並且您的DLL處於調試模式,那麼可能會產生您描述的效果。 (不管它實際上是差異的原因,沒有足夠的信息在這裏說,你可以確保雙方都是建立在相同的方式和彙報的速度差是否會消失?)