码迷,mamicode.com
首页 > 其他好文 > 详细

浏览器内核引擎开发工作的主要关注点

时间:2014-10-29 17:07:17      阅读:403      评论:0      收藏:0      [点我收藏+]

标签:浏览器   硬件加速   线程安全   性能优化   chromium   

浏览器内核引擎开发工作的主要关注点

跳转至: 导航 搜索

目录

稳定性

  1. 对Android浏览器这种既有Java代码又有C++代码来说,稳定性意味着:
    1. Java代码不应该有NPE(空指针异常)
    2. C++代码不能出现内存错误,包括:
      1. null deref
      2. 指针越界访问
      3. 重复delete、free后use、循环引用、不对齐访问 等等
  2. 在某些情况下,空指针来自于有线程安全问题的代码(存在竞争条件),这类问题无法稳定再现,必须做好设计、review、编码规范,以小心避免
  3. 空指针也有可能来自于外部模块的错误(如硬件驱动),导致某个输入不应该为空的却在某种情况下变空了
    1. 如果可能的话,对所有外部输入做仔细的校验检查!

性能

  1. 加载速度 主要考虑网络IO的优化,挖掘潜在的并行度(如Chromium引入的多线程html解析)
    1. 通过云服务器转换目标网站数据来压缩流量(称为‘云加速’?)
    2. 在某些可能的情况下,考虑先展示部分加载的数据?
    3. js加载会阻塞html解析,css应用又可能阻塞js加载,<script>可加async,前端应用可考虑优化页面结构
  2. 渲染速度
    1. js引擎(jsc/v8):增量GC、Trace JIT(优化最热执行路径)、类型提示(asm.js)
    2. layout、图形引擎(compositor)等模块的进一步性能改进(总觉得chromium应该做得很好了,而且这个也有难度)
      1. 需要了解GPU的基本原理、CPU+GPU架构的内在瓶颈
      2. Canvas/SVG的硬件加速
    3. Tiling/滚动
  3. 视频播放*
    1. 如何保证在不稳定的3G网络下流畅播放视频?
  4. 内存占用
    1. 浏览器应做到在长时间运行(一个月?)的情况下内存占用稳定,无内存泄漏
    2. 寻找WebKit核心仍然存在的一些可以优化的数据结构

功能

  1. 如果要修改浏览器内核,如何做好源代码管理,使得rebase到更高版本的upstream后,不需要做太多工作?
  2. 修改内核以增加功能的要点:
    1. 遵循W3C规范?
    2. 熟悉通过js binding增加API的方法
    3. webcore模块化?
  3. 有没有可能以插件(plugin/addon)的方式开发对应的功能,不需要修改内核?
    1. ad blocker(广告拦截)
    2. PDF.js
  4. 以user script hack-in的方式解决网站兼容性问题

其他因素

  1. 提高UI交互可用性:Accessbility、手势、语音输入、基于区域的touch事件
  2. 其他:‘夜间模式’ WebRTC WebGL 

浏览器内核引擎开发工作的主要关注点

标签:浏览器   硬件加速   线程安全   性能优化   chromium   

原文地址:http://blog.csdn.net/cteng/article/details/40587395

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!