2014年5月21日 星期三

Booting time.

最近在最佳化系統工作 , 主要 force on booting time .
後來發現 , 第一個程式 loading 完到執行 main() 卻要花很久 .
實驗範例如下 :
int main(int argc, char **argv)
{
 .......
 printf ("xxxxx \n );
 .........
 .........
}

發現 printf 大約要 2 秒後才會列印出來 , Why ?? 花很多時間在 loading library 嗎 ?

(當然我的 cpu 只有 133MHz , 所以才會花這樣久 , 如何測量呢 ? 可以利用 bootchart 搭配來測量 , 雖說不是很準, 不過可以看到有所 delay time )


結果發現 ,只要在 .so file 的 code 內加入下列這樣的宣告 Function .
就會在 loading .so 的時候去執行 ,如果這樣的 function 花費很多時間處理 , 當然 running main() 的時間也會延後 .

__attribute__  ((constructor)) void test_font_init(void)
{
 ..........
}

PS. 主要是宣告 constructor這個屬性 , 有關這個 屬性的詳細內容 , 使用方式 ,可以去 google 找一下,一堆說明 .

沒有留言:

張貼留言