light talk @ coscup 2011 : incremental global prelink for android

34
Incremental Global Prelink for Android Kito Cheng [email protected]

Upload: kito-cheng

Post on 06-May-2015

1.230 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Incremental Global Prelink for Android

Kito [email protected]

Page 2: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Who am I ?

Kito

Page 3: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Who am I ?

學術奴隸 @天大地大台科大

熱血工讀生 @0xlab

Page 4: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Incremental Global Prelink for Android

???????

Page 5: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Incremental Global Prelink for Android

???????

這是碩士論文題目嗎 ?

Page 6: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Incremental Global Prelink for Android

先來看一下什麼是 link

Page 7: Light talk @ coscup 2011 : Incremental Global Prelink for Android

執行檔啟動流程

載入相關動態函式庫

執行檔讀入記憶體

更新符號位址(Relocation)

開始執行 !

Loader

Dynamic Linker 程式啟動時間

libc/libm/libdvm...

printf, sin, cos, ...

Linker 做的事就通通叫 link

Page 8: Light talk @ coscup 2011 : Incremental Global Prelink for Android

執行檔啟動流程

載入相關動態函式庫

執行檔讀入記憶體

更新符號位址(Relocation)

開始執行 !

Loader

Dynamic Linker 程式啟動時間

Page 9: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Incremental Global Prelink for Android

所以應該大概知道都 link 是啥了唄 !

Page 10: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Incremental Global Prelink for Androidpre : 預先 ...

所以應該大概知道都 link 是啥了唄 !

Page 11: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Incremental Global Prelink for Androidpre : 預先 ...

Prelink : 預先 link!

所以應該大概知道都 link 是啥了唄 !

Page 12: Light talk @ coscup 2011 : Incremental Global Prelink for Android

執行檔啟動流程

載入相關動態函式庫

執行檔讀入記憶體

更新符號位址(Relocation)

開始執行 !

Loader

Dynamic Linker 程式啟動時間

Prelink= Link 時間減少

Page 13: Light talk @ coscup 2011 : Incremental Global Prelink for Android

執行檔啟動流程

載入相關動態函式庫

執行檔讀入記憶體

更新符號位址(Relocation)

開始執行 !

Loader

Dynamic Linker 程式啟動時間

Prelink= Link 時間減少

Link 時間減少 = 程式啟動變快 !

Page 14: Light talk @ coscup 2011 : Incremental Global Prelink for Android

So what?

Prelink = Link 時間減少 = 程式啟動變快 !

Page 15: Light talk @ coscup 2011 : Incremental Global Prelink for Android

So what?

Android 開機要載入很多程式

Prelink = Link 時間減少 = 程式啟動變快 !

Page 16: Light talk @ coscup 2011 : Incremental Global Prelink for Android

So what?

Android 開機要載入很多程式

程式 Prelink 後啟動速度變快

Prelink = Link 時間減少 = 程式啟動變快 !

Page 17: Light talk @ coscup 2011 : Incremental Global Prelink for Android

So what?

Android 開機要載入很多程式

程式 Prelink 後啟動速度變快

Prelink 後 Android 開機變快 !!

Prelink = Link 時間減少 = 程式啟動變快 !

Page 18: Light talk @ coscup 2011 : Incremental Global Prelink for Android

其實 ...

你手上的 Android 已經有使用 Prelink 了

Page 19: Light talk @ coscup 2011 : Incremental Global Prelink for Android

其實 ...

你手上的 Android 已經有使用 Prelink 了

所以我是來騙台錢的 XD

Page 20: Light talk @ coscup 2011 : Incremental Global Prelink for Android

其實 ...

你手上的 Android 已經有使用 Prelink 了

所以我是來騙台錢的 XD

Page 21: Light talk @ coscup 2011 : Incremental Global Prelink for Android

但目前 Android 使用的是 local prelink !

Incremental Global Prelink for Android

Page 22: Light talk @ coscup 2011 : Incremental Global Prelink for Android

但目前 Android 使用的是 local prelink !

Incremental Global Prelink for Android

Page 23: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Local ( 本地 ) vs Global ( 全球 )

但目前 Android 使用的是 local prelink !

Incremental Global Prelink for Android

Page 24: Light talk @ coscup 2011 : Incremental Global Prelink for Android

名稱大勝 ( 誤 )

Local ( 本地 ) vs Global ( 全球 )

但目前 Android 使用的是 local prelink !

Incremental Global Prelink for Android

Page 25: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Local ( 本地 ) vs Global ( 全球 )

libc.soprintf

libfoo.sofoobar

void foo (){ printf(“fooooo”); bar();}

Local Prelink:還有一個 Relocationprintf

Global Prelink:沒半個 Relocation!

共兩個 Relocationprintfbar

Page 26: Light talk @ coscup 2011 : Incremental Global Prelink for Android

Local ( 本地 ) vs Global ( 全球 )

只能處理同檔案資訊 vs

可處理跨檔案資訊

Page 27: Light talk @ coscup 2011 : Incremental Global Prelink for Android

27

所以到底多厲害 ?

Page 28: Light talk @ coscup 2011 : Incremental Global Prelink for Android

28

所以到底多厲害 ?

聽說在 Nexus S 上開機

可以快接近兩秒

Page 29: Light talk @ coscup 2011 : Incremental Global Prelink for Android

29

所以到底多厲害 ?

?????

聽說在 Nexus S 上開機

可以快接近兩秒

Page 30: Light talk @ coscup 2011 : Incremental Global Prelink for Android

30

所以到底多厲害 ?

?????

聽說在 Nexus S 上開機

可以快接近兩秒

因為我是個窮阿宅沒有 Android 手機 ( 泣

Page 31: Light talk @ coscup 2011 : Incremental Global Prelink for Android

還是搞不懂在幹嘛耶 !

Incremental Global Prelink for Android

Page 32: Light talk @ coscup 2011 : Incremental Global Prelink for Android

用了後開機 / 程式啟動會變快就對了 XD

Incremental Global Prelink for Android

還是搞不懂在幹嘛耶 !

Page 33: Light talk @ coscup 2011 : Incremental Global Prelink for Android

被遺忘了 XD

Incremental Global Prelink for Android

Page 34: Light talk @ coscup 2011 : Incremental Global Prelink for Android

也要 !

Open Source !

不知道啥時會 open 就是了 XD