前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >边看chromium的代码边想骂人……

边看chromium的代码边想骂人……

作者头像
龙泉寺扫地僧
发布2019-02-20 11:06:37
7680
发布2019-02-20 11:06:37
举报
文章被收录于专栏:盟主来了盟主来了

这几天在看chromium for andrid的代码,边看边想骂,谷歌这帮人。。

一开始搞了个牛逼的架构,在安卓4.4上把以前webkit团队的简单版替换掉了

结果发现性能大不如简单版的。

简单版本的思路其实很赞,

主要就是分块渲染,然后录制,回放

这个模式很屌。

据说chrome自己的团队接手安卓的webview后,赶紧把安卓团队的经验学过来(此处乃听说,未求证)。

然后移植到chrome上搞了个更加复杂的架构。

这才把性能追上来。

这个框架大概原理,就是渲染的时候,webkit负责录制需要绘制哪些东西,

比如绘制文本,绘制矩形,

这些都是录下来的,

然后到另外个线程回放出来,

一边回放一边调用opengl命令,

最后生成一块块的瓦片,

然后再上屏。

这个瓦片还是有优先级的,

方便在滚动的时候做策略的优化,

哪些命令在哪些瓦片里可以先绘制个模糊的,

这样性能就很高了。

chromium团队接手后,大重构先,

结果第一版搞的架构太复杂,还不如安卓team当年的效率高

然后又继续重构,弄了个更复杂的架构

最后性能确实不错了,比安卓team封装的简化版webkit要好些

不过架构复杂太多了。

最近又在搞slimming paint,不过搞了一两年了,还没做稳定,现在的slimming paint 2一打开就各种断言错误。。。

另外,就代码风格上来说,chromium接手后,喜欢这样写代码:随便写个简单的功能,先要host一下,然后client一下,再delegate一下,

最后impl一下。看了几千行代码后,你发现一句有用的都没有,实现不在这里面,那种感动。。。

还有,让我产生了幻觉,觉得写C++代码的风格是这样的:

类不直接访问,

全部加到TypeList,必须用元编程使用常值去索引,

所有参数和返回值上各种类型推演、enable_if。

对象怎能简单new一个了事,当然要搞个超复杂的工厂函数,

利用static变量的特性,加上模板推演技术,进行自动化的注册,

让他找都找不到这个对象到底在哪里生成的。还要用一堆type_info加智能指针转来转去,

把他的头转晕。能用预处理元、模板元编程的地方,就不手写代码。

既然用到了模板元,当然要深度引用boost的mpl库,让他如读天书,

为了增强代码的不可读性,还要大量使用半吊子的lamda。

还要大量使用C++标准中含糊的、误导性的代码,比如说std::remove根本不会删除元素,st::list::size竟然是O(n)的……

话说还是以前的架构易读

超喜欢以前的架构

可惜清爽版在安卓4.4后就不维护了,统一叫chromium for android webview。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年09月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档