|
发表于 2022-3-5 16:17:17
|
显示全部楼层
本帖最后由 KaedeNatsuki 于 2022-3-5 16:24 编辑
乃可能对编程略知一二吧, 理解相当片面惹
首先, Chromium 目录结构相当复杂, 包括base cc chrome content gpu net ipc media mojo skia third_party ui v8, 这本来就是 OS 级别代码量
比如v8层, 看起来功能很单一, 只是实现一下js嘛, 但里面包括字节码解析器, JIT 编译器, 多代GC, inspector (调试支持), 内存和 CPU 的 profiler(性能统计), WebAssembly 支持, 两种 post-mortem diagnostics 的支持, 启动快照 代码缓存、代码热点分析……是难坑的编译原理和优化方向惹
再比如Blink, 它需要实现web平台的规范(例如,HTML标准), 包括DOM,CSS和Web IDL, 配合V8运行JavaScript, 从底层网络堆栈请求资源, 构建DOM树, 计算样式和布局, 请求chrome compositor(上文提到的cc层)并绘制图形。
还有syzygy优化。谷歌嫌chrome太大了、加载太慢了。于是他们开发了一套工具链, 优化重排布PE二进制文件的算法来达到优化程序。Chrome浏览器应用了Syzygy优化之后, 程序冷启动的页面调度(paging traffic)优化了80%, 加载的Image的Working Set优化了40%。简单的说, 谷歌为了优化启动性能, 从编译器上对exe、dll开始做手脚了。
总之, 以上随意一个点, 要正确的实现, 都是一个团队的工作量, 都可以写成一本书。然而chromium把他们全部实现了, 而且还在不停的加入新的功能。
乃以为浏览器只是兼容一下网页代码呀, 把升级内核想得如此简单, 偶看乃才没干过这一行, 不知道偶们极度烧脑的泥坑o(╥﹏╥)o
|
|