java 內聯函數(轉)

 以前用過C++,知道它裏面有一個內聯函數這個概念,一般情況用inline關鍵字修飾,在C++定義類時,那種寫中Class定義裏面的函數,也被編譯器當做內聯函數處理。 
    
    說了這麼多,還沒說什麼是內聯函數。所謂內聯函數就是指函數在被調用的地方直接展開,編譯器在調用時不用像一般函數那樣,參數壓棧,返回時參數出棧以及資源釋放等,這樣提高了程序執行速度。 
    
    現在該說Java了,對應Java語言中也有一個關鍵字final來指明那個函數是內聯的,例: 

 

public final void doSomething() {
		// to do something
}

 

    該方法在被調用時,會在調用處直接展開使用,從而提高程序執行速度。此外final關鍵字還有一個作用,防止doSomething方法在子類中被覆蓋,如果你希望doSomething是一個最終行爲的話,那它應該被設計成final。 
    
    內聯不一定好,當被指定爲內聯的方法體很大時,展開的開銷可能就已經超過了普通函數調用調用的時間,引入了內聯反而降低了性能,因爲在選擇這個關鍵字應該慎重些,不過,在以後高版本的JVM中,在處理內聯時做出了優化,它會根據方法的規模來確定是否展開調用。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章