靜態編譯就是在編譯的時候把你所有的模塊都編譯進exe里去,當你啟動這個exe的時候所有模塊都加載進來了。你寫小程序沒問題,但程序一大,加載的過程(就是當你運行程序時初始化的過程)就比較費力了。。大多數ppc的硬件配置還是很一般的。。。。。。
動態編譯就不一樣了,你編譯的時候那些模塊都沒有編譯進去,一般情況下你可以把那些模塊都編譯成dll,這樣你啟動程序(初始化)的時候這些模塊不會被加載,而是在運行的時候,用到那個模塊就調用哪個模塊。。。。。
簡單的打個比方,我寫個閱讀器,支持txt,pdf,udm三種格式,暫時把讀txt,讀pdf,讀udm定義為三個功能模塊。
使用靜態編譯:我想看個txt,點擊應用程序圖標以后三個功能都加載進來了,判斷格式,使用讀txt模塊。。。(在這里,另外兩個模塊的作用就是占用系統資源。。。。-。-)
使用動態編譯:我想看個txt,點擊應用程序,判斷格式,只加載讀txt模塊,使用讀txt模塊。。。
顯然,動態編譯1速度快,2節省了系統資源,3利於今后拓展。。。。。。。。
以下是2個比較形象的解釋:
一個是租自行車,什么時候騎什么時候租,有新車就租新車,沒新車就租舊車,有電動車就省點勁,碰上沒車座子的就扎屁股,人家不出租了你就別用了。
一個是自己買個自行車天天扛着,進電梯上地鐵也扛着。老子自己的車,想什么時候騎就什么時候騎,不用看出租自行車老大媽的臉色。
用靜態鏈接庫編譯,相當於你帶着一個工具包到處跑(遇到有需要的地方不需要周圍的環境提供相應的工具,自己用自己工具包的工具就行了,所以當環境發生變化可以盡可能的無視),當然,你本來不帶任何東西走到哪是哪和工具包隨身帶的區別顯然就是重量增加了,即程序的體積可能會比另一種方式來的大一點,看你的工具包有多大了。
僅此記錄,以作學習之用。
Java編譯時間:是指虛擬機的JIT編譯器編譯熱點代碼的時間,我們知道Java語言的跨平台,編譯出的class文件中存儲的是字節碼,虛擬機通過解釋的方式執行字節碼文件,比起C、C++的本地二進制代碼速度慢很多,JDK1.2后虛擬機內置了兩個運行時編譯器,如果一個Java方法,被調用次數達到一定程度,就會被判定為熱代碼,交給JIT編譯器編譯為本地代碼,提高運行速度,C、C++是靜態編譯,而java是動態編譯