GTK+/DFB优化

GTK+/DFB优化(续)

转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>


在前一篇GTK优化的BLOG中,我介绍我当时知道的优化方法,这段时间又有一些新的体会,写出来和大家分享吧:

1) 固化DirectFB的配置。由于DirectFB的配置基本上都是固定的,通常没有必要使用配置文件,直接把配置固化到代码里好了,即省了配置文件的解析,又省了某些插件目录的扫描。

2) 去掉DirectFB中不必要的插件。每个input driver都会创建一个线程,图形加速的插件很多,加载进来要浪费不少空间去容纳.data/.bss的全局数据,而且这些数据每个进程都有一份独立的拷贝,造成大量时间/空间的浪费。

3) 去掉GTK中不必要的pixbuf loader和immodules,有些pixbuf loader和immodule永远不会用到或者很少用到,可以去掉它们,省了空间又加快起动速度。这只要修改$prefix/etc/gtk-2.0中的配置文件即可。

4) 去掉_gdk_visual_init中的检测。这个函数比较费时,由于它的检测结果总是固定的,可以直接把结果写到代码里。对broncho说,把整个循环注释掉就行了。

5) 预先加载常用动态库。以前我用过这个办法,却得到的相反的结论,速度反而变慢了!后来发现是因为dlopen是以LAZY方式打开的,改用NOW方式之后速度有显著提高,起动时间差不多减少一半。

6) 尽早显示窗口。在创建窗口完成后,马上显示出来,然后再加载数据,避免让用户等得太久。由于gtk_widget_show是异步的,在show之后再调用while(gtk_events_pending())  gtk_main_iteration(),可以让窗口立即显示。

7) 预先创建窗口。由于DirectFB只要0.2秒就能完成初始化,而GTK则至少要1秒多钟,一个比较狠的方法就是在DirectFB初始化完成时,马上创建一个窗口并显示出来,GTK真正创建窗口时直接重用这个创建好的窗口。

8) 单窗口机制。考虑到手机应用的特殊性-窗口独占工作区。一个应用程序可以只用一个窗口,打开新窗口时,只是增加这个窗口的引用计数,并把新窗口的内容显示到上面, destroy时减少它的引用计数,并把原来的内容显示上去,引用计数为0时才真正destroy。

GTK优化没有什么好的方法,只能从一点一滴做起,欢迎交流。

原文地址:https://www.cnblogs.com/zhangyunlin/p/6167634.html