这一年一直在看chromium for android的代码,边看边想骂,谷歌这帮人。。
一开始搞了个牛逼的架构,在安卓4.4上把以前android 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加智能指针转来转去,
把他的头转晕。能用预处理元、模板元编程的地方,要么用python、perl自动生成代码,就不手写代码。
既然用到了模板元,当然要深度引用各种库,让别人如读天书,
为了增强代码的不可读性,还要大量使用半吊子的lamda。
还要大量使用C++标准中含糊的、误导性的代码,比如说std::remove根本不会删除元素,st::list::size竟然是O(n)的。。。。

话说回来,还是以前的webkit版本架构易读。
超喜欢以前的架构,
可惜清爽版在安卓4.4后就不维护了,统一叫chromium for android webview。
其实我就是想吐槽下chromium,哈哈

边看chromium的代码,边想骂人...相关推荐

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

    这几天在看chromium for andrid的代码,边看边想骂,谷歌这帮人.. 一开始搞了个牛逼的架构,在安卓4.4上把以前webkit团队的简单版替换掉了 结果发现性能大不如简单版的. 简单版本 ...

  2. python骂人代码大全_边看chromium的代码,边想骂人...

    这一年一直在看chromium for android的代码,边看边想骂,谷歌这帮人.. 一开始搞了个牛逼的架构,在安卓4.4上把以前android webkit团队的简单版替换掉了, 结果发现性能大 ...

  3. 我在一个构造方法中写了30个参数,老板看了想骂人

    本文收录于<愚公要移山>的个人博客,地址是www.javachat.cc 本文基于<Effective Java>一书中的第二条: 前言 一般我们写参数如果写个一两个,那就可以 ...

  4. 为什么word下面有红线_这4个Word细节不做好,老板看了都想骂人!赶紧记下来

    一个人的专业度体现在他日常办公中,尤其是处理的文档资料,会被老师.同学.领导.同事等无数人看到,每一个细节,都会影响别人对你评价. 比如下面案例,就是一份错误百出极不专业的反面典型. 一份文档应该留意 ...

  5. 想骂人!开发语言不能统一成一个么?

    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. 有时候,写TypeScript写多了,写Java的时候就老容易出错.而当陷入某个项目一段时间之后,自我感觉老熟悉的Pyth ...

  6. 超级表格能防脱,看完文章程序员想打人

    前段时间,90后脱发危机稳稳的占据了热搜. 比"90后老了"更扎心的就是"90后秃了",很显然,大家最担忧的问题变成了"脱发". 梳头掉一把 ...

  7. java手机代码骂人_好的代码会说话-代码整洁之道

    <代码整洁之道>总结 我们需要写出整洁的代码吗 我是个6年开发经验的java程序员,在我的职业生涯中,看到过不少让产生骂人冲动的代码,当然也写过让别人让别人想骂人的代码

  8. 一位局长的“骂人情结”

    我是个粗人.自小时候起就打架骂人成瘾,为此没少吃苦头.参加工作以后,为了好好地表现自己,以便弄个一官半职,我就强压住了骂瘾,表现出文明礼貌.很有教养的样子.经过多年的努力,我如愿以偿地当上了局长.我发 ...

  9. java骂人_一位局长的“骂人情结”

    我是个粗人.自小时候起就打架骂人成瘾,为此没少吃苦头.参加工作以后,为了好好地表现自己,以便弄个一官半职,我就强压住了骂瘾,表现出文明礼貌.很有教养的样子.经过多年的努力,我如愿以偿地当上了局长.我发 ...

最新文章

  1. js关闭手机浏览器_Unity 之 WebGL打开手机摄像头
  2. SAP CDS view查询的fixed limit
  3. 一个简单的基于socket的通讯处理程序
  4. 本地缓存之Guava简单使用
  5. 怎么把图片四角去掉_端午“粽子”怎么做,有哪几种包法,嘉兴粽子闻名全国,软糯可口...
  6. Windows 10企业批量部署实战之Windows 10客户端部署
  7. 抖音何以为“抖音”?少不了A/B测试的功劳
  8. Prometheus入门简介
  9. SDOI2017 相关分析
  10. 求三维空间中的三角形外接圆圆心坐标的算法
  11. ios 更多 Url Schemes
  12. kafka:发现kafka丢消息后的排查
  13. 软件工程复习 第三章 软件立项
  14. 图像质量评价 开源项目汇总
  15. Linux下8723be网卡,解决 RTL8723BE 无线网卡不稳定的问题
  16. php strtotime 2099,PHP的strtotime()函数2039年bug问题
  17. html保存当前页面为图片,将html页面保存成图片,图片写入pdf的实现方法(推荐)
  18. 计算机ab级ppt,计算机二级MS_Office考试PPT题型汇总附答案
  19. C++中sort()排序函数应用
  20. 2019 杭电第九场1007 Rikka with Travels

热门文章

  1. 程序员学历低,该被歧视吗? | 每日趣闻
  2. 迁移不是云计算面临的唯一障碍
  3. 【项目】MD5加盐源码理解
  4. docker镜像、容器管理
  5. Salesforce Einstein承诺提供“开箱即用”的人工智能应用程序
  6. JVM学习笔记(二)------Java代码编译和执行的整个过程
  7. Hibernate中sessoin的flush学习笔记
  8. 使用Visual Studio工作流发布SharePoint网页
  9. 剔除Intellij中Mybatis的Mapper自动注入警告
  10. Android Q:新系统名称和新特性整理