免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1205 | 回复: 0
打印 上一主题 下一主题

GTK+/DFB优化 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-13 14:27 |只看该作者 |倒序浏览
转载时请注明出处和作者联系方式
作者联系方式:李先静
在前一篇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优化没有什么好的方法,只能从一点一滴做起,欢迎交流。
[/url]


本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u3/93290/showart_2147536.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP