light talk @ coscup 2011 : incremental global prelink for android

Post on 06-May-2015

1.230 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Incremental Global Prelink for Android

Kito Chengkito@0xlab.org

Who am I ?

Kito

Who am I ?

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

熱血工讀生 @0xlab

Incremental Global Prelink for Android

???????

Incremental Global Prelink for Android

???????

這是碩士論文題目嗎 ?

Incremental Global Prelink for Android

先來看一下什麼是 link

執行檔啟動流程

載入相關動態函式庫

執行檔讀入記憶體

更新符號位址(Relocation)

開始執行 !

Loader

Dynamic Linker 程式啟動時間

libc/libm/libdvm...

printf, sin, cos, ...

Linker 做的事就通通叫 link

執行檔啟動流程

載入相關動態函式庫

執行檔讀入記憶體

更新符號位址(Relocation)

開始執行 !

Loader

Dynamic Linker 程式啟動時間

Incremental Global Prelink for Android

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

Incremental Global Prelink for Androidpre : 預先 ...

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

Incremental Global Prelink for Androidpre : 預先 ...

Prelink : 預先 link!

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

執行檔啟動流程

載入相關動態函式庫

執行檔讀入記憶體

更新符號位址(Relocation)

開始執行 !

Loader

Dynamic Linker 程式啟動時間

Prelink= Link 時間減少

執行檔啟動流程

載入相關動態函式庫

執行檔讀入記憶體

更新符號位址(Relocation)

開始執行 !

Loader

Dynamic Linker 程式啟動時間

Prelink= Link 時間減少

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

So what?

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

So what?

Android 開機要載入很多程式

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

So what?

Android 開機要載入很多程式

程式 Prelink 後啟動速度變快

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

So what?

Android 開機要載入很多程式

程式 Prelink 後啟動速度變快

Prelink 後 Android 開機變快 !!

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

其實 ...

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

其實 ...

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

所以我是來騙台錢的 XD

其實 ...

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

所以我是來騙台錢的 XD

但目前 Android 使用的是 local prelink !

Incremental Global Prelink for Android

但目前 Android 使用的是 local prelink !

Incremental Global Prelink for Android

Local ( 本地 ) vs Global ( 全球 )

但目前 Android 使用的是 local prelink !

Incremental Global Prelink for Android

名稱大勝 ( 誤 )

Local ( 本地 ) vs Global ( 全球 )

但目前 Android 使用的是 local prelink !

Incremental Global Prelink for Android

Local ( 本地 ) vs Global ( 全球 )

libc.soprintf

libfoo.sofoobar

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

Local Prelink:還有一個 Relocationprintf

Global Prelink:沒半個 Relocation!

共兩個 Relocationprintfbar

Local ( 本地 ) vs Global ( 全球 )

只能處理同檔案資訊 vs

可處理跨檔案資訊

27

所以到底多厲害 ?

28

所以到底多厲害 ?

聽說在 Nexus S 上開機

可以快接近兩秒

29

所以到底多厲害 ?

?????

聽說在 Nexus S 上開機

可以快接近兩秒

30

所以到底多厲害 ?

?????

聽說在 Nexus S 上開機

可以快接近兩秒

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

還是搞不懂在幹嘛耶 !

Incremental Global Prelink for Android

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

Incremental Global Prelink for Android

還是搞不懂在幹嘛耶 !

被遺忘了 XD

Incremental Global Prelink for Android

也要 !

Open Source !

不知道啥時會 open 就是了 XD

top related